0

我需要與GoogleSignIn按鈕登錄並獲得用戶的名稱,將其顯示到導航欄的標題TextView的,但我不能訪問它 1 - 這裏的問題.. error screenshotandroid - 如何訪問導航抽屜標題項目?

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 the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 

    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a 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 the 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 

注意:的login_activity沒有任何問題,它的工作原理,但問題是我如何從谷歌按鈕這些信息,並把它放在抽屜式導航欄標題菜單的TextView的(只是名字),我會做別人(電子郵件 - 照片)

回答

12

您需要膨脹標題視圖,因爲它不會自動膨脹。

View header = mNavigationView.getHeaderView(0); 
mNameTextView = (TextView) header.findViewById(R.id.nameTextView); 
mNameTextView.setText("XYZ"); 
+0

哦謝謝它的作品...謝謝:) –