我有一个活动和五个片段。我在选项菜单中有一个导航抽屉按钮,可以帮助我浏览片段。但是我想将一个片段更改为后退按钮。当前后退按钮工作正常。但是在一起随着活动选项菜单也工作,它将导航抽屉。如何停止?
这是我的抽屉
MainActivity
@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);
}
实际上,当我在两个选项菜单中选择选项菜单主页代码时,我只想让片段选项菜单工作。我怎么能阻止它?请帮忙
答案 0 :(得分: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这段代码会起作用。希望这有帮助。