我有一個帶有FrameLayout和菜單的ActionBar活動。當用戶單擊菜單項時,我將該片段替換爲相關的新片段。但是,我看不到一個明顯的方法來刪除所選片段的菜單項。Android - 如何隱藏當前片段的菜單選項
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (savedInstanceState == null) {
StudyFragment startFragment = new StudyFragment();
startFragment.setArguments(getIntent().getExtras());
getSupportFragmentManager().beginTransaction().add
(R.id.container, startFragment).commit();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
switch (id) {
case R.id.action_study:
replaceFragment((Fragment)new StudyFragment());
break;
case R.id.action_list:
replaceFragment((Fragment)new ListFragment());
break;
// etc
}
return super.onOptionsItemSelected(item);
}
private void replaceFragment(Fragment f) {
FragmentTransaction transaction =
getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.container, f);
transaction.addToBackStack(null);
transaction.commit();
}
上changing menus的谷歌文檔說來禁用onPrepareOptionsMenu菜單 - 但是我怎麼知道哪些項目已被選中?
--Solution Implemented--
使用穆罕默德Refaat的解決方案下面我添加了兩個新成員等級:
private Menu activityMenu;
private MenuItem curMenuItem;
擺列onCreateOptionsMenu
activityMenu = menu;
curMenuItem = activityMenu.findItem(R.id.action_study);
curMenuItem.setVisible(false);
而就改變了他們onOptionsItemSelected
curMenuItem.setVisible(true);
curMenuItem = activityMenu.findItem(id);
curMenuItem.setVisible(false);
的https: //stackoverflow.com/questions/26420204/changing-visibility-of-menu-items-in-f細分/ 47531110#47531110 – 2017-11-28 12:06:28