MainActivity.java
protected void onResume(){
super.onResume();
intent = getIntent();
if(intent.hasExtra(EXTRA_MESSAGE)) {
inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
vi = inflater.inflate(R.layout.nav_header_main, null);
user_name = (TextView) vi.findViewById(R.id.user_name);
username = intent.getStringExtra(EXTRA_MESSAGE);
Log.d("USERNAME ", username);
user_name.setText(username);
}
}
activity_main.xml中
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:openDrawer="start">
<include
layout="@layout/app_bar_main"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<android.support.design.widget.NavigationView
android:id="@+id/nav_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:fitsSystemWindows="true"
app:headerLayout="@layout/nav_header_main"
app:menu="@menu/activity_main_drawer" />
</android.support.v4.widget.DrawerLayout>
nav_header_main.xml
<TextView
android:id="@+id/user_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/imageView"
android:textSize="15sp"
android:text="@string/Uname"
android:textColor="#000000" />
</RelativeLayout>
在这里,我接受了另一项活动的意图,一切顺利,没有任何错误。但是,我无法使用 user_name.setText(username); <更新 nav_header_main.xml 的 TextView / p>
答案 0 :(得分:0)
试试这个
获取您的NavigationView
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view)
尝试通过这样的膨胀来获取标题视图
View headerView = navigationView.inflateHeaderView(R.layout.nav_header_main)
获取您的textView,如下所示
user_name = (TextView) headerView.findViewById(R.id.user_name);
希望这会对你有所帮助。
答案 1 :(得分:0)
这段代码对我有用。 我们可以通过
引用它,而不是给新的headerView充气getHeaderView()
TextView user_name;
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
View headerView= navigationView.getHeaderView(0);
user_name = (TextView) headerView.findViewById(R.id.user_name);
user_name.setText("Whatever the name is!");
getHeaderView()参数中的0是navigationView中标题的索引;通常当你有一个标题时,最好将其索引为0。