在包含的布局中更改 TextView
Changing the TextView in included layout
我试图在程序执行期间将 TextView 中的文本更改为从不同 activity 发送的数据。
TextView id="@+id/userName"
在我的 nav_header_main 布局文件中
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="@dimen/nav_header_height"
android:background="@color/primary_dark_material_dark"
android:theme="@style/ThemeOverlay.AppCompat.Dark" android:orientation="vertical"
android:gravity="bottom"
android:weightSum="1"
android:id="@+id/navigation_view">
<ImageView android:layout_width="83dp" android:layout_height="wrap_content"
android:paddingTop="@dimen/nav_header_vertical_spacing"
android:src="@mipmap/user" android:id="@+id/imageView"
android:layout_weight="0.84" />
<TextView
android:id="@+id/userName"
android:layout_width="match_parent" android:layout_height="wrap_content"
android:paddingTop="@dimen/nav_header_vertical_spacing"
android:text="hello"
android:textAppearance="@style/TextAppearance.AppCompat.Body1" />
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content"
android:text="hello" android:id="@+id/userDetail" />
</LinearLayout>
它包含在 main.xml 中作为
<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" />
我尝试通过 OnCreate 方法设置文本
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
NavigationView nav_view= (NavigationView)findViewById(R.id.nav_view);
userName = (TextView) nav_view.findViewById(R.id.userName);
String user = getIntent().getExtras().getString("User");
userName.setText(user); //user is a string
但在执行过程中我仍然得到 "Null Pointer Error"。我是否遗漏了一些让事情正常运行的东西?
对于未来的用户:
首先,您需要获取 header 视图:View header = nav_view.getHeaderView(0);
然后获取您的小部件:userName = (TextView) header.findViewById(R.id.userName);
我试图在程序执行期间将 TextView 中的文本更改为从不同 activity 发送的数据。
TextView id="@+id/userName"
在我的 nav_header_main 布局文件中
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="@dimen/nav_header_height"
android:background="@color/primary_dark_material_dark"
android:theme="@style/ThemeOverlay.AppCompat.Dark" android:orientation="vertical"
android:gravity="bottom"
android:weightSum="1"
android:id="@+id/navigation_view">
<ImageView android:layout_width="83dp" android:layout_height="wrap_content"
android:paddingTop="@dimen/nav_header_vertical_spacing"
android:src="@mipmap/user" android:id="@+id/imageView"
android:layout_weight="0.84" />
<TextView
android:id="@+id/userName"
android:layout_width="match_parent" android:layout_height="wrap_content"
android:paddingTop="@dimen/nav_header_vertical_spacing"
android:text="hello"
android:textAppearance="@style/TextAppearance.AppCompat.Body1" />
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content"
android:text="hello" android:id="@+id/userDetail" />
</LinearLayout>
它包含在 main.xml 中作为
<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" />
我尝试通过 OnCreate 方法设置文本
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
NavigationView nav_view= (NavigationView)findViewById(R.id.nav_view);
userName = (TextView) nav_view.findViewById(R.id.userName);
String user = getIntent().getExtras().getString("User");
userName.setText(user); //user is a string
但在执行过程中我仍然得到 "Null Pointer Error"。我是否遗漏了一些让事情正常运行的东西?
对于未来的用户:
首先,您需要获取 header 视图:View header = nav_view.getHeaderView(0);
然后获取您的小部件:userName = (TextView) header.findViewById(R.id.userName);