我有一个活动菜单,在一个片段上,我想替换该菜单中的一个项目。按下该项目将启动一个活动。我的片段菜单项工作,但它也调用活动菜单项意图。我需要删除重复的主活动菜单项也被选中。
主要活动菜单:
public boolean onOptionsItemSelected(MenuItem item) {
else if(itemId == R.id.action_settings)
startActivity (new Intent(getApplicationContext(),
PreferencesActivity.class));
return super.onOptionsItemSelected(item);
}片段菜单:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_settings:
startActivity(new Intent(getActivity(),
PreferencesFragment.class));
return false;
default:
break;
}
return false;
}发布于 2014-12-27 17:32:42
只有当该活动不使用该操作时,它才会被传递给该片段。您可以在活动中添加一个布尔值,该布尔值将导致该项的切换被绕过。
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (!isMyFragmentPresent()) {
switch (item.getItemId()) {
case R.id.action_settings:
startActivity(new Intent(getApplicationContext(),
PreferencesActivity.class));
return true;
default:
break;
}
}
return false;
}
public void setMyFragmentIsPresent(boolean isMyFragmentPresent) {
this.isMyFragmentPresent = isMyFragmentPresent;
}更新:我意识到,如果你有比你想要改变的项目更多的东西,这是行不通的。也许您最好在活动中加载一个默认片段,它只会加载R.id.action_settings设置按钮和它所做的事情。然后,这个片段将被您的新片段替换。
https://stackoverflow.com/questions/27669475
复制相似问题