簡體   English   中英

我無法在我的導航抽屜上放置聽眾,您能告訴我我在哪里錯嗎?

[英]i can't make a listener on my navigation drawer, can you tell me where do i wrong?

我從空活動創建此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();

}

用這個

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);

並同時更改此刪除DrawerLayout findViewById(R.id.drawer)並將您的NavigationView ID

例如findViewById(R.id.YournavigationView);

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM