我在抽屉布局中有一个NavigationView,其中包含一个HeaderView,后跟一个菜单(如AndroidStudio'导航抽屉活动模板中所示)。 My Header在LinearLayout中包含一个Image和几个TextView。我想编辑SharedPreferences标题中的一个TextView。我使用以下功能
public void navUpdate()
{
navigationView=(NavigationView)findViewById(R.id.nav_view);
linearLayout=(LinearLayout) LayoutInflater.from(this).inflate(R.layout.nav_header_main, null);
textView_nname=(TextView)linearLayout.findViewById(R.id.textView_nname);
String name=sharedPreferences.getString("name","Your Name");
textView_nname.setText(name);
navigationView.removeHeaderView(linearLayout);
navigationView.addHeaderView(linearLayout);
}
问题是,虽然我已添加了
行navigationView.removeHeaderView(linearLayout);
我之前的标题视图仍然可以在新标题上方看到。而前一个没有更新。我在许多答案中读到了关于方法navigationview.getHeaderAt()的信息,但请相信我,该方法不可用。
是否有解决此问题的方法,如果没有其他方法可以这样做?
答案 0 :(得分:1)
为了让您从Header
获取NavigationView
,您必须拨打getHeaderView(int index)
,例如:
View headerView = navigationView.getHeaderView(0);
textView_nname = (TextView)headerView.findViewById(R.id.textView_nname);
// set whatever you like on the textView.