繁体   English   中英

Android Studio 导航抽屉不处理点击

[英]Android studio navigation drawer not handling clicks

我正在尝试使用导航抽屉,在单击导航项时用片段替换框架布局。 这是我的抽屉代码...

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

当我单击菜单图标时会弹出导航菜单,但没有一个项目单击起作用。 甚至没有我在底部的退出意图。

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

}

看到您已经实现了Drawer我假设您已经在Activity声明了NavigationView 如果还没有。

在您的Activity实现OnNavigationItemSelectedListener

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

将此添加到您的onCreate Activity

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

在您的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