简体   繁体   English

Android Studio 导航抽屉不处理点击

[英]Android studio navigation drawer not handling clicks

I'm trying to have a navigation drawer that replaces a frame layout with a fragment on a navigation item click.我正在尝试使用导航抽屉,在单击导航项时用片段替换框架布局。 Here's my code for the drawer...这是我的抽屉代码...

 @Override
public boolean onOptionsItemSelected(MenuItem item) {

    switch (item.getItemId()) {
        case android.R.id.home:
            mDrawerLayout.openDrawer(GravityCompat.START);
            return true;

        case R.id.things_manager:
            ThingsManager thingsManager = new ThingsManager();
            FragmentManager fragmentManager1 = getSupportFragmentManager();
            fragmentManager1.beginTransaction().replace(R.id.fragment_container, thingsManager).commit();
            return true;

        case R.id.settings_tab:
            Settings settings = new Settings();
            FragmentManager fragmentManager2 = getSupportFragmentManager();
            fragmentManager2.beginTransaction().replace(R.id.fragment_container, settings).commit();
            return true;

        case R.id.sign_out_tab:
            Intent i = new Intent(this, Login.class);
            startActivity(i);
            return true;
    }

    return super.onOptionsItemSelected(item);
}

The nav menu pops up when I click the menu icon, but none of the item clicks work.当我单击菜单图标时会弹出导航菜单,但没有一个项目单击起作用。 Not even the sign out intent that I have at the bottom.甚至没有我在底部的退出意图。

 @Override
public boolean onOptionsItemSelected(MenuItem item) {
android.support.v4.app.Fragment myFragment = null;
Class fragmentClass = null;

switch (item.getItemId()) {
    case android.R.id.home:
        //Example if your fragment activity name is fragment_home
          fragmentClass = fragment_home.class;
          break;

    case R.id.things_manager:
        //Same as Home
        break;

    case R.id.settings_tab:
        //
        break;

    case R.id.sign_out_tab:
        //
        break;
}
try{
        myFragment = (android.support.v4.app.Fragment) fragmentClass.newInstance();
    }catch(Exception e){
        e.printStackTrace();
    }
    android.support.v4.app.FragmentManager fragmentManager = getSupportFragmentManager();
    //Back Button Wont Kill
    fragmentManager.beginTransaction().replace(R.id.frameLayout, myFragment).addToBackStack(null).commit();


return super.onOptionsItemSelected(item);

} }

Seeing that you have Drawer already implemented I assume you have already declared NavigationView in your Activity .看到您已经实现了Drawer我假设您已经在Activity声明了NavigationView If haven't already.如果还没有。

Implement OnNavigationItemSelectedListener in your Activity .在您的Activity实现OnNavigationItemSelectedListener

public class MyActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener  {....}

Add this in your onCreate of Activity将此添加到您的onCreate Activity

NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
    navigationView.setNavigationItemSelectedListener(this);

Add this method in your Activity to handle clicks on Drawer items.在您的Activity添加此方法以处理对 Drawer 项目的点击。

@Override
public boolean onNavigationItemSelected(MenuItem item) {

    switch (item.getItemId()) {
        case android.R.id.home:
            mDrawerLayout.openDrawer(GravityCompat.START);
            return true;

        case R.id.things_manager:
            ThingsManager thingsManager = new ThingsManager();
            FragmentManager fragmentManager1 = getSupportFragmentManager();
            fragmentManager1.beginTransaction().replace(R.id.fragment_container, thingsManager).commit();
            return true;

        case R.id.settings_tab:
            Settings settings = new Settings();
            FragmentManager fragmentManager2 = getSupportFragmentManager();
            fragmentManager2.beginTransaction().replace(R.id.fragment_container, settings).commit();
            return true;

        case R.id.sign_out_tab:
            Intent i = new Intent(this, Login.class);
            startActivity(i);
            return true;
    }

    mDrawerLayout.closeDrawer(GravityCompat.START);
    return true;
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM