2017-08-16 110 views
0

當在後備堆棧中添加片段時,選項菜單單擊不起作用。第一個片段選項項目點擊工作。onOptionsItemSelected在片段backstack中不工作

代碼片段堆棧中

public void setFragment(Fragment fragment, int title_res) { 
    String backStateName = fragment.getClass().getName(); 
    FragmentManager manager = getSupportFragmentManager(); 
    FragmentTransaction fragmentTransaction = manager.beginTransaction(); 
    if (editable_mode) { 
     boolean fragmentPopped = manager.popBackStackImmediate(backStateName, 0); 
     Log.e("fragmentPopped", fragmentPopped + ""); 
     if (fragmentPopped) { 
      fragmentTransaction.remove(fragment); 
     } 
     fragmentTransaction.add(R.id.view_container, fragment); 
     fragmentTransaction.addToBackStack(backStateName); 
     fragmentTransaction.commit(); 
    } else { 
     boolean fragmentPopped = manager.popBackStackImmediate(backStateName, 0); 
     Log.e("fragmentPopped", fragmentPopped + ""); 
     if (!fragmentPopped) { //fragment not in back stack, create it. 
      fragmentTransaction.add(R.id.view_container, fragment); 
      fragmentTransaction.commit(); 
     } 
    } 

    getSupportActionBar().setTitle(title_res); 
} 
+0

您是否在片段或基本Activity類中設置了選項菜單? – hsm59

+0

in base activity –

回答

1
在片段的onCreate

()加入這一行

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setHasOptionsMenu(true); 
} 

更新:

如果從基底活動增加你的菜單,然後添加以下代碼到您的片段onResume()並從onCreate()移除setHasOptionsMenu(true)

@Override 
    public void onResume() { 
     super.onResume(); 
     ActivityCompat.invalidateOptionsMenu(getActivity()); 
    } 
+0

已經添加..這條線.. –

+0

我編輯了我的答案。請嘗試 –