如何在单独的布局文件中引用 TextView?
How to reference a TextView in a separate layout file?
我建了一个导航activity,由3个xml个文件组成,即
home_activity.xml
nav_header.xml
drawer_menu.xml
home_activity.xml 将这些集合在一起并设置为 HomeActivity.java 中的内容视图。
现在,我正在尝试以编程方式在 nav_header.xml 文件中设置 TextView 的文本,但以空指针异常结束。我明白为什么,但不太知道如何克服这个问题。如何引用原始 TextView 而不是它的副本,就像膨胀和添加它的结果一样。
PS。我有 2 周的 Android 经验,
提前致谢
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.home_activity);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
drawer = findViewById(R.id.drawer_layout);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawer,
toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.addDrawerListener(toggle);
toggle.syncState();
View nav_header = getLayoutInflater()
.inflate(findViewById(R.id.nav_header), null);
TextView text_username = nav_header.findViewById(R.id.text_username);
text_username.setText("There you go");
}
所以我找到了解决方案:
NavigationView navigationView = findViewById(R.id.nav_view);
View navigationHeader = navigationView.getHeaderView(0);
textUsername = navigationHeader.findViewById(R.id.text_username);
textUsername.setText("There you go");
我建了一个导航activity,由3个xml个文件组成,即
home_activity.xml
nav_header.xml
drawer_menu.xml
home_activity.xml 将这些集合在一起并设置为 HomeActivity.java 中的内容视图。
现在,我正在尝试以编程方式在 nav_header.xml 文件中设置 TextView 的文本,但以空指针异常结束。我明白为什么,但不太知道如何克服这个问题。如何引用原始 TextView 而不是它的副本,就像膨胀和添加它的结果一样。
PS。我有 2 周的 Android 经验,
提前致谢
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.home_activity);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
drawer = findViewById(R.id.drawer_layout);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawer,
toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.addDrawerListener(toggle);
toggle.syncState();
View nav_header = getLayoutInflater()
.inflate(findViewById(R.id.nav_header), null);
TextView text_username = nav_header.findViewById(R.id.text_username);
text_username.setText("There you go");
}
所以我找到了解决方案:
NavigationView navigationView = findViewById(R.id.nav_view);
View navigationHeader = navigationView.getHeaderView(0);
textUsername = navigationHeader.findViewById(R.id.text_username);
textUsername.setText("There you go");