如何使用NavigationView.addHeaderView()添加更新的NavHeader视图时删除现有的NavHeader视图?

时间:2016-01-12 01:53:42

标签: android navigation-drawer drawerlayout android-navigation-drawer

我在抽屉布局中有一个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()的信息,但请相信我,该方法不可用。

Here's how it looks

是否有解决此问题的方法,如果没有其他方法可以这样做?

1 个答案:

答案 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.