2017-04-20 40 views
0

我正在尋找一種解決方案,以便如何在引用抽屜中設置用戶名和電子郵件的文本,從MainActivity引用其他佈局中的ID。在MainActivity中使用它的佈局在導航抽屜中顯示登錄的用戶

nav_header_main.xml 

MainActivity Screenshot 1

MainActivity Screenshot 2

下面的代碼顯示所登錄的用戶從activity_main.xml中引用TextViews但我需要的 「R.id.」以引用nav_header_main.xml中的用戶名和電子郵件TextViews,以便能夠在導航抽屜標題中顯示用戶的詳細信息。

MainActivity.java

if(!SharedPrefManager.getInstance(this).isLoggedIn()){ 

      finish(); 
      startActivity(new Intent(this, LoginActivity.class)); 
     } 
     textviewUsername = (TextView)findViewById(R.id.username); 
     textviewEmail = (TextView)findViewById(R.id.email); 
    /* 
     textviewUsername = (TextView)findViewById(R.id.textViewUsernameNav); 
    textViewEmail= (TextView)findViewById(R.id.textViewEmailNav); */ 

     textviewEmail.setText(SharedPrefManager.getInstance(this).getEmail()); 
     textviewUsername.setText(SharedPrefManager.getInstance(this).getUsername()); 

nav_header_xml

android:id="@+id/nav_header_main_id" 

<TextView 
    android:id="@+id/textViewUsernameNav" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:paddingTop="@dimen/nav_header_vertical_spacing" 
    android:text="Username" 
    android:textAppearance="@style/TextAppearance.AppCompat.Body1" /> 

<TextView 
    android:id="@+id/textViewEmailNav" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="[email protected]" /> 
+0

添加導航視圖佈局和主要活動的XML –

+0

試試我的答案更新導航headerview用戶名和電子郵件的TextView – FAT

+0

問題是不是讓我引用nav_header_main.xml裏面的TextViews –

回答

2
  1. 使用NavigationView.getHeaderView(0)獲取標題視圖。
  2. 使用HeaderView.findViewById()來獲取子視圖的參考。

試試這個:

public class MainActivity extends AppCompatActivity 
     implements NavigationView.OnNavigationItemSelectedListener { 

    NavigationView mNavigationView; 
    View mHeaderView; 

    TextView textViewUsername; 
    TextView textViewEmail; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     ................... 
     .......................... 

     // NavigationView 
     mNavigationView = (NavigationView) findViewById(R.id.nav_view); 

     // NavigationView Header 
     mHeaderView = mNavigationView.getHeaderView(0); 

     // View 
     textViewUsername = (TextView) mHeaderView.findViewById(R.id.textViewUsernameNav); 
     textViewEmail= (TextView) mHeaderView.findViewById(R.id.textViewEmailNav); 

     // Set username & email 
     textViewUsername.setText(SharedPrefManager.getInstance(this).getUsername()); 
     textViewEmail.setText(SharedPrefManager.getInstance(this).getEmail()); 


     mNavigationView.setNavigationItemSelectedListener(this); 
    } 
} 

希望這將有助於〜

+0

謝謝先生!有效! :D –

+0

最受歡迎:) – FAT

0

嘗試使用findViewById的頭來看,是這樣的:

NavigationView navigationView = (NavigationView) findViewById(R.id.navigation_view); 
View headerView = navigationView.getHeaderView(0); 
textviewUsername= (TextView) headerView.findViewById((R.id.username));