Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to change text of a TextView in navigation drawer header?

I want to change the text of a TextView inside the navigation drawer header. But I get this error:

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference


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">      <LinearLayout         android:layout_width="match_parent"         android:layout_height="match_parent"         android:orientation="vertical">          <include             layout="@layout/app_bar_main"             android:layout_width="match_parent"             android:layout_height="wrap_content" />          <FrameLayout             android:id="@+id/frame_container"             android:layout_width="match_parent"             android:layout_height="match_parent" />      </LinearLayout>      <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 version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"     android:layout_width="match_parent"     android:layout_height="@dimen/nav_header_height"     android:background="@drawable/slide_nav_bar"     android:gravity="bottom"     android:orientation="vertical"     android:paddingBottom="@dimen/activity_vertical_margin"     android:paddingLeft="@dimen/activity_horizontal_margin"     android:paddingRight="@dimen/activity_horizontal_margin"     android:paddingTop="@dimen/activity_vertical_margin"     android:theme="@style/ThemeOverlay.AppCompat.Dark">      <ImageView         android:id="@+id/tvHeaderIcon"         android:layout_width="60dp"         android:layout_height="60dp"         android:paddingTop="@dimen/nav_header_vertical_spacing"         android:src="@android:drawable/sym_def_app_icon" />      <TextView         android:layout_width="match_parent"         android:layout_height="wrap_content"         android:paddingTop="@dimen/nav_header_vertical_spacing"         android:text="@string/app_name"         android:textAppearance="@style/TextAppearance.AppCompat.Body1" />      <TextView         android:id="@+id/tvHeaderName"         android:layout_width="wrap_content"         android:layout_height="wrap_content" />  </LinearLayout> 

MainActivity.java

TextView tvHeaderName;  @Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.activity_main);      tvHeaderName= (TextView) findViewById(R.id.tvHeaderName);     tvHeaderName.setText("Saly");     } 

How can I do this?

like image 941
Salar Rastari Avatar asked Jan 24 '16 08:01

Salar Rastari


People also ask

How do I assign text to TextView?

Set The Text of The TextView You can set the text to be displayed in the TextView either when declaring it in your layout file, or by using its setText() method. The text is set via the android:text attribute. You can either set the text as attribute value directly, or reference a text defined in the strings.

What is the attribute name for displaying message using TextView component?

android:id-ID is an attribute used to define a TextView uniquely.


1 Answers

Use function getHeaderView on your navigationView:

NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); View headerView = navigationView.getHeaderView(0); TextView navUsername = (TextView) headerView.findViewById(R.id.navUsername); navUsername.setText("Your Text Here"); 
like image 156
Bereket Gobeze Avatar answered Oct 26 '22 22:10

Bereket Gobeze