2014-12-27 104 views
0

我有一个活动菜单和一个片段,我想要替换该菜单中的一个项目。该项目按下时启动一项活动。我的片段菜单项有效,但它也调用活动菜单项意图。我需要删除正在选择的重复主要活动菜单项目。片段菜单调用活动菜单

主要活动菜单:

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

只有当活动不使用它传递给片段的动作。您可以在该活动中添加一个布尔值,使该项目绕开开关。

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

更新:我知道这不起作用,如果你有更多的项目比你想改变。也许你会更好地拥有一个默认的Fragment,它加载的活动除了加载R.id.action_settings设置按钮以外,什么也不做。这个片段将被新的片段替换。