Eug*_*ito 2 java xml android sharedpreferences navigation-drawer
我正在寻找有关如何从引用另一个布局中的 ID 的 MainActivity 在导航抽屉中设置用户名和电子邮件文本的解决方案。
nav_header_main.xml
Run Code Online (Sandbox Code Playgroud)
下面是显示登录用户从activity_main.xml引用 TextViews 的代码,但是我需要“ R.id”。引用 nav_header_main.xml 中的用户名和电子邮件 TextViews,以便能够在导航抽屉标题中显示用户的详细信息。
主活动.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());
Run Code Online (Sandbox Code Playgroud)
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="username@email.com" />
Run Code Online (Sandbox Code Playgroud)
NavigationView.getHeaderView(0)得到的标题视图。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);
}
}
Run Code Online (Sandbox Code Playgroud)
希望这会有所帮助~
| 归档时间: |
|
| 查看次数: |
4765 次 |
| 最近记录: |