java - How to access the Navigation Drawer Header Items? -


this question has answer here:

i need sign in googlesignin button , name of user show textview in header of navigation bar(the activity created template android studio in gallery of activities not implemented me), got error told me have nullpointerexception in textview ... don't know why ? 1- here's problem.. error screenshot

activity_main.xml

<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

<imageview     android:id="@+id/photoimageview"     android:layout_width="70dp"     android:layout_height="60dp"     android:paddingtop="@dimen/nav_header_vertical_spacing"     app:srccompat="@android:drawable/sym_def_app_icon" />  <textview     android:id="@+id/nametextview"     android:text="namehere"     android:layout_width="match_parent"     android:layout_height="wrap_content"     android:paddingtop="@dimen/nav_header_vertical_spacing"      android:textappearance="@style/textappearance.appcompat.body1" />  <textview     android:id="@+id/emailtextview"     android:layout_width="wrap_content"     android:layout_height="wrap_content"     android:text="android.studio@android.com" /> 

mainactivity.java

 public class mainactivity extends appcompatactivity  implements navigationview.onnavigationitemselectedlistener,   googleapiclient.onconnectionfailedlistener {  imageview photoimageviewe; textview nametextview, emailtextview, txt3ady;  private googleapiclient googleapiclient;  @override protected void oncreate(bundle savedinstancestate) {     super.oncreate(savedinstancestate);     setcontentview(r.layout.activity_main);     toolbar toolbar = (toolbar) findviewbyid(r.id.toolbar);     setsupportactionbar(toolbar);      //drawer inflater     drawerlayout drawer = (drawerlayout) findviewbyid(r.id.drawer_layout);     actionbardrawertoggle toggle = new actionbardrawertoggle(             this, drawer, toolbar, r.string.navigation_drawer_open, r.string.navigation_drawer_close);     drawer.setdrawerlistener(toggle);     toggle.syncstate();     navigationview navigationview = (navigationview) findviewbyid(r.id.nav_view);     navigationview.setnavigationitemselectedlistener(this);      nametextview = (textview) findviewbyid(r.id.nametextview);     emailtextview = (textview) findviewbyid(r.id.emailtextview);     photoimageviewe = (imageview) findviewbyid(r.id.photoimageview);      //google signin     googlesigninoptions gso = new googlesigninoptions.builder(googlesigninoptions.default_sign_in)             .requestemail()             .build();      googleapiclient = new googleapiclient.builder(this)             .enableautomanage(this,this)             .addapi(auth.google_sign_in_api,gso)             .build(); }//end oncreate  public void  logout(view view){     auth.googlesigninapi.signout(googleapiclient).setresultcallback(new resultcallback<status>() {         @override         public void onresult(@nonnull status status) {             if (status.issuccess())             {                 gologinscreen();             }             else {                 toast.maketext(getapplicationcontext(), "not_signed_out", toast.length_short).show();             }         }     }); }//end logout()  public void revoke(view view) {      auth.googlesigninapi.revokeaccess(googleapiclient).setresultcallback(new resultcallback<status>() {         @override         public void onresult(@nonnull status status) {             if (status.issuccess()){                 gologinscreen();             }             else{                 toast.maketext(getapplicationcontext(),"not_revoke",toast.length_short).show();             }         }     });  }//end revoke()  @override protected void onstart() {     super.onstart();      optionalpendingresult<googlesigninresult> op = auth.googlesigninapi.silentsignin(googleapiclient);     if (op.isdone())     {         googlesigninresult result = op.get();         handlesigninresults(result);     }     else     {         op.setresultcallback(new resultcallback<googlesigninresult>() {             @override             public void onresult(@nonnull googlesigninresult googlesigninresult) {                 handlesigninresults(googlesigninresult);             }         });     }//end else }//end onstart()  private void handlesigninresults(googlesigninresult result) {      if (result.issuccess())     {   //////here//////////////////////////////////////         googlesigninaccount account = result.getsigninaccount();         assert account != null;         nametextview.settext(account.getdisplayname());         //emailtextview.settext(account.getemail());          //glide.with(this).load(account.getphotourl()).into(photoimageviewe);     }//end if     else {         gologinscreen();     }//end else  }//end handlesigninresults()  private void gologinscreen() {      intent intent = new intent(this,loginactivity.class);     intent.addflags(intent.flag_activity_clear_top |   intent.flag_activity_clear_task | intent.flag_activity_new_task);     startactivity(intent); }//end gologinscreen  //end google signin  @override public void onbackpressed() {     drawerlayout drawer = (drawerlayout) findviewbyid(r.id.drawer_layout);     if (drawer.isdraweropen(gravitycompat.start)) {         drawer.closedrawer(gravitycompat.start);     } else {         super.onbackpressed();     } }//end onbackpressed  @override public boolean oncreateoptionsmenu(menu menu) {     // inflate menu; adds items action bar if present.     getmenuinflater().inflate(r.menu.main, menu);      return true; }  @override public boolean onoptionsitemselected(menuitem item) {     // handle action bar item clicks here. action bar     // automatically handle clicks on home/up button, long     // specify parent activity in androidmanifest.xml.     int id = item.getitemid();      //noinspection simplifiableifstatement     if (id == r.id.action_settings) {         return true;     }      return super.onoptionsitemselected(item); }  @suppresswarnings("statementwithemptybody") @override public boolean onnavigationitemselected(menuitem item) {     // handle navigation view item clicks here.     int id = item.getitemid();      if (id == r.id.nav_camera) {         // handle camera action     } else if (id == r.id.nav_gallery) {      } else if (id == r.id.nav_slideshow) {      } else if (id == r.id.nav_manage) {      } else if (id == r.id.nav_share) {      } else if (id == r.id.nav_send) {      }     drawerlayout drawer = (drawerlayout) findviewbyid(r.id.drawer_layout);     drawer.closedrawer(gravitycompat.start);     return true;  }   @override public void onconnectionfailed(@nonnull connectionresult connectionresult) {     toast.maketext(getapplicationcontext(),"no internet",   toast.length_long).show();    }   }//end class main activity 

loginactivity.java google signin button initialization

  public class loginactivity extends appcompatactivity implements googleapiclient.onconnectionfailedlistener {  private googleapiclient googleapiclient; private signinbutton signinbutton; public static final int sign_in_code = 123; //unique code used show result   @override protected void oncreate(bundle savedinstancestate) {     super.oncreate(savedinstancestate);     setcontentview(r.layout.activity_log_in);      googlesigninoptions googlesigninoptions = new googlesigninoptions.builder(googlesigninoptions.default_sign_in)             .requestemail()             .build();      googleapiclient = new googleapiclient.builder(this)             .enableautomanage(this/*this activity*/, this/*who hear if goes wrong*/)             .addapi(auth.google_sign_in_api,googlesigninoptions)             .build();      signinbutton = (signinbutton) findviewbyid(r.id.signin_button);     signinbutton.setonclicklistener(new view.onclicklistener() {         @override         public void onclick(view v) {             intent intent = auth.googlesigninapi.getsigninintent(googleapiclient);             startactivityforresult(intent,sign_in_code);         }     });//end click listner  }//end oncreate  //this method excecuted when goes wrong in connection @override public void onconnectionfailed(@nonnull connectionresult connectionresult) {     toast.maketext(this, "no internet",toast.length_short).show(); }//end method onconnectionfailed   @override protected void onactivityresult(int requestcode, int resultcode, intent data) {     super.onactivityresult(requestcode, resultcode, data);      if ( requestcode == sign_in_code  ){         googlesigninresult result = auth.googlesigninapi.getsigninresultfromintent(data);         handlesigninresult(result);     }  }//end onactivityresult method  private void handlesigninresult(googlesigninresult result) {     if (result.issuccess()){         gomainscreen();     } else{         toast.maketext(this, "mahmmoud not successed", toast.length_short).show();     } }//end handlesigninresult() method  private void gomainscreen() {     intent intent = new intent(this, mainactivity.class);     intent.addflags(intent.flag_activity_clear_top | intent.flag_activity_clear_task | intent.flag_activity_new_task);     startactivity(intent);     toast.maketext(this, "signed in succeeded",toast.length_short).show();  }//end method gomainscreen() }//end class loginactivity 

notice: login_activity.java doesn't have problem , works, problem how these info google button , put on navigation drawer header menu's textview(just name) , others (email-photo)

you need inflate header view not inflated automatically .

view header = mnavigationview.getheaderview(0); mnametextview = (textview) header.findviewbyid(r.id.nametextview); mnametextview.settext("xyz"); 

Comments

Popular posts from this blog

How to understand 2 main() functions after using uftrace to profile the C++ program? -

c# - Update a combobox from a presenter (MVP) -

How to put a lock and transaction on table using spring 4 or above using jdbcTemplate and annotations like @Transactional? -