我有一个主活动,其中我使用三个片段来指定选项卡。在 ActionBar 上有一个按钮,导航到另一个片段,比如“关于应用程序的信息”。一旦用户导航到这个特定的片段(Info),我会将其禁用,以便不会反复调用。然后在主活动中按返回键时重新启用它。到目前为止都很好。但是我无法重新启用它进行一种情况:假设用户导航到信息片段但没有按返回键,但是如果他导航到其他选项卡,信息按钮仍然被禁用,因为还没有调用返回键。我尝试了很多事情,在 onStart() 和 onResume() 中的片段中,但我无法在其中引用 menuItem,因为我得到了空指针。
代码参考:(MainActivity 在 onOptionsSelected 中调用 Info 片段):
代码参考:(MainActivity 在 onOptionsSelected 中调用 Info 片段):
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;
按下返回键(主要活动):
@Override
public void onBackPressed() {
mMenuItem.setEnabled(true);
super.onBackPressed();
}
switch-case
内设置default: mMenuItem.setEnabled(true);
呢? - mrsus