我有一个活动菜单,在一个片段上我想替换该菜单中的一个项目。按下时的项目启动活动。我的片段菜单项有效,但它也调用活动菜单项目意图。我还需要删除正在选择的重复主活动菜单项。
主要活动菜单:
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;
}
答案 0 :(得分:0)
仅当活动不使用传递给片段的操作时。您可以在活动中添加一个布尔值,该布尔值会导致绕过该项目的开关。
@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设置按钮以及它做什么之外什么都不做。然后,这个片段将被您的新片段替换。