2017-11-18 76 views
0

我創建這個drawer從空的活動,所以我不使用fragment我不能在我的導航抽屜上做聽衆,你能告訴我我的錯在哪?

public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener{ 

private FirebaseAuth.AuthStateListener authListener; 
private FirebaseAuth auth; 
private Button signOut; 
private DrawerLayout nDrawer; 
private ActionBarDrawerToggle nToggle; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

,當我把這個setNavigaionViewListener,這個活動會崩潰的身材,做我錯了地方?

//setNavigationViewListner(); 

    //get firebase auth instance 
    auth = FirebaseAuth.getInstance(); 

我不知道爲什麼,但得到當前用戶不工作,但我沒有得到錯誤的地方。

//get current user 
    final FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser(); 

    authListener = new FirebaseAuth.AuthStateListener() { 
     @Override 
     public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { 
      FirebaseUser user = firebaseAuth.getCurrentUser(); 
      if (user == null) { 
       // user auth state is changed - user is null 
       // launch login activity 
       startActivity(new Intent(MainActivity.this, LoginActivity.class)); 
       finish(); 
      } 
     } 
    }; 

    signOut = (Button) findViewById(R.id.sign_out); 
    nDrawer = (DrawerLayout) findViewById(R.id.drawer); 
    nToggle = new ActionBarDrawerToggle(MainActivity.this,nDrawer,R.string.open,R.string.close); 

    nDrawer.addDrawerListener(nToggle); 
    nToggle.syncState(); 
    getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

    signOut.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      signOut(); 
      startActivity(new Intent(MainActivity.this, LoginActivity.class)); 
     } 
    }); 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    if (nToggle.onOptionsItemSelected(item)){ 
     return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 

//method to set Listener 

private void setNavigationViewListner() { 
    NavigationView navigationView = (NavigationView) findViewById(R.id.drawer); 
    navigationView.setNavigationItemSelectedListener(this); 

} 

@Override 
public boolean onNavigationItemSelected(@NonNull MenuItem item) { 
    switch (item.getItemId()){ 
     case R.id.account:{ 
      startActivity(new Intent(MainActivity.this, ProfileActivity.class)); 
      break; 
     } 

     case R.id.logout:{ 
      signOut(); 
      startActivity(new Intent(MainActivity.this, LoginActivity.class)); 
      break; 
     } 
    } 
    nDrawer.closeDrawer(GravityCompat.START); 
    return true; 
} 

//sign out method 
public void signOut() { 
    auth.signOut(); 

} 
+0

你需要看看[堆棧跟​​蹤](http://stackoverflow.com/questions/23353173),以確定飛機失事的原因。也就是說,你使用'R.id.drawer'來查找'DrawerLayout'和'NavigationView'。它不能兼而有之。 –

回答

0

使用此

Toolbar toolbar = (Toolbar) findViewById(R.id.Yourtoolbar); 
nToggle = new ActionBarDrawerToggle(
     MainActivity.this, nDrawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); 

,而不是這個

nToggle = new ActionBarDrawerToggle(MainActivity.this,nDrawer,R.string.open,R.string.close); 

,改變這個刪除DrawerLayoutfindViewById(R.id.drawer),並把你的NavigationViewID

例如findViewById(R.id.YournavigationView);

NavigationView navigationView = (NavigationView) findViewById(R.id.YournavigationView); 
+0

我把 私人工具欄工具欄; setNavigationonViewListner(); 和你告訴的變化 NavigationView navigationView =(NavigationView)findViewById(R.id.drawer); nToggle = new ActionBarDrawerToggle( MainActivity.this,nDrawer,toolbar,R.string.navigation_drawer_open,R.string.navigation_drawer_close); 但不工作,我錯了嗎? –

+0

@avid_kupit檢查更新ans – Prem

+0

是啊,我把一個工具欄,並像你sugesst,但仍然沒有工作 NavigationView navigationView =(NavigationView)findViewById(R.id.drawer); 工具欄工具欄=(工具欄)findViewById(R.id.toolbar); nToggle = new ActionBarDrawerToggle( MainActivity.this,nDrawer,toolbar,R.string.navigation_drawer_open,R.string.navigation_drawer_close); –

相關問題