我有一个主要活动,我使用三个片段指定标签。我在ActionBar上有一个按钮导航到一个不同的片段,说“关于应用程序的信息”一旦用户导航到这个特定的片段(信息),我就禁用它,这样就不会一次又一次地调用它。然后在主活动的后退键上重新启用它。到现在为止还挺好。但我无法在一种情况下重新启用它:假设用户导航到信息片段并且没有按回,但是如果他导航到另一个选项卡,则信息按钮仍然被禁用,因为背压没有被称为。我在onStart()和onResume()片段中尝试了很多东西,但是当我得到一个空指针时,我无法在其中任何一个中引用menuItem。
代码参考:(从onOptionsSelected调用信息片段时的MainActivity):
public boolean onOptionsItemSelected(MenuItem item) {
mMenuItem = item;
switch (item.getItemId()) {
case R.id.info:
Tab d = getActionBar().getSelectedTab();
System.out.println(""+d.getText().toString());
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager
.beginTransaction();
String a = d.getText().toString();
if(a.equalsIgnoreCase("Reminders")){
FragmentContact fragmentcontact = new FragmentContact();
fragmentTransaction.replace(R.id.realtabcontent, fragmentcontact);
mMenuItem.setEnabled(false);
//mMenuItem.setIcon(R.drawable.btn_age_01);
}
else if(a.equalsIgnoreCase("Notifications")){
FragmentContact fragmentcontact = new FragmentContact();
fragmentTransaction.replace(R.id.realtabcontent2, fragmentcontact);
mMenuItem.setEnabled(false);
}
else if(a.equalsIgnoreCase("Contacts")){
FragmentContact fragmentcontact = new FragmentContact();
fragmentTransaction.replace(R.id.realtabcontent3, fragmentcontact);
mMenuItem.setEnabled(false);
}
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
break;
on返回键(主要活动):
@Override
public void onBackPressed() {
mMenuItem.setEnabled(true);
super.onBackPressed();
}
答案 0 :(得分:2)
解决方案非常简单,为个别“片段”使用设置选项菜单:
setHasOptionsMenu(true);
干杯!!