2014-12-27 183 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設置按鈕以外,什麼也不做。這個片段將被新的片段替換。