从导航访问多个文本视图时应用程序崩溃 header
App crashes when accessing multiple textviews from navigation header
最近我尝试了一个 navigation view
和 header
的应用程序。
header 包含 2 textview,一个 name
和 email
。
当我尝试通过代码动态设置文本视图时,它抛出空指针异常。
谁能帮我解决这个问题。
Navigation_view
<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"
app:menu="@menu/activity_home_drawer" />
Navigation_header
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="@dimen/nav_header_height"
android:gravity="bottom"
android:orientation="vertical"
android:theme="@style/ThemeOverlay.AppCompat.Dark">
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/imageView"
android:paddingTop="@dimen/nav_header_vertical_spacing"
android:layout_marginLeft="20dp"
android:textColor="@color/colorAccent"
android:text="Welcome"
android:textAppearance="@style/TextAppearance.AppCompat.Body1" />
<TextView
android:id="@+id/email"
android:layout_below="@+id/title"
android:layout_marginLeft="20dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="info@rubin.in" />
</RelativeLayout>
MainActivity 中的代码
TextView Title = (TextView)findViewById(R.id.title);
Title.setText("Guest");
TextView Email = (TextView)findViewById(R.id.email);
Email.setText("Guest@email.in");
Logcat 错误
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
因为它在 NavigationView
尝试navigationView.findViewById(viewId);
我在使用 NavigationView
时遇到的一件奇怪的事情有时是 navigationView.findViewById(viewId)
return null
(原因可能是我们尝试访问(header ) 在膨胀到 NavigationView
)
之前查看
现在我以前手动添加header到NavigationView
View header = LayoutInflater.from(this).inflate(R.layout.header_layout, null);
navigationView.addHeaderView(header);
TexView title = (TextView) header.findViewById(R.id.title);
最近我尝试了一个 navigation view
和 header
的应用程序。
header 包含 2 textview,一个 name
和 email
。
当我尝试通过代码动态设置文本视图时,它抛出空指针异常。
谁能帮我解决这个问题。
Navigation_view
<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"
app:menu="@menu/activity_home_drawer" />
Navigation_header
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="@dimen/nav_header_height"
android:gravity="bottom"
android:orientation="vertical"
android:theme="@style/ThemeOverlay.AppCompat.Dark">
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/imageView"
android:paddingTop="@dimen/nav_header_vertical_spacing"
android:layout_marginLeft="20dp"
android:textColor="@color/colorAccent"
android:text="Welcome"
android:textAppearance="@style/TextAppearance.AppCompat.Body1" />
<TextView
android:id="@+id/email"
android:layout_below="@+id/title"
android:layout_marginLeft="20dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="info@rubin.in" />
</RelativeLayout>
MainActivity 中的代码
TextView Title = (TextView)findViewById(R.id.title);
Title.setText("Guest");
TextView Email = (TextView)findViewById(R.id.email);
Email.setText("Guest@email.in");
Logcat 错误
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
因为它在 NavigationView
尝试navigationView.findViewById(viewId);
我在使用 NavigationView
时遇到的一件奇怪的事情有时是 navigationView.findViewById(viewId)
return null
(原因可能是我们尝试访问(header ) 在膨胀到 NavigationView
)
现在我以前手动添加header到NavigationView
View header = LayoutInflater.from(this).inflate(R.layout.header_layout, null);
navigationView.addHeaderView(header);
TexView title = (TextView) header.findViewById(R.id.title);