2017-04-20 45 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));