1

我有一个活动和五个片段。我在选项菜单中有一个导航抽屉按钮,可以帮助我浏览片段。但是在一个片段上,我想将其更改为后退按钮。当前后退按钮工作正常。但与此一起活动选项菜单也可以工作,它会打开导航抽屉。如何阻止它?

这是我的抽屉

主要活动

    @Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.action_settings:
            FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
            fragmentTransaction.replace(R.id.container, new SettingsFragment());
            fragmentTransaction.addToBackStack(null);
            fragmentTransaction.commit();
            break;       
        case android.R.id.home:
            mDrawerLayout.openDrawer(GravityCompat.START);
            break;
        default:
            break;
    }
    return super.onOptionsItemSelected(item);
}

分段

    @Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case android.R.id.home:
            getFragmentManager().popBackStack();
            return true;
        default:
            break;
    }
    return super.onOptionsItemSelected(item);
}

实际上,当我在两个选项菜单中选择选项菜单主代码时,我只希望片段选项菜单工作。我该如何阻止它?请帮忙

4

1 回答 1

1

首先,在您的活动中,创建一个标志来检查主页按钮是否为后退按钮:isBackShow = false。然后,在onOptionsItemSelected

 case android.R.id.home: // show drawer or pop backstack base on flag
        if(isBackShow)
        getFragmentManager().popBackStack();
        mDrawerLayout.openDrawer(GravityCompat.START);
        return true;

在您的中,您可以在您想要的地方或某处SettingsFragment更改父亲的标志,Activity如下所示:onCreateView

if(getActivity() instanceof YourFatherActivity){
        ((YourFatherActivity)getActivity()).isBackShow = true;
        // You can also change drawer icon to back icon here.
}

但是,我没有检查代码,AFAIK 这个代码会起作用。希望这有帮助。

于 2015-07-17T10:08:58.810 回答