У меня есть три пункта меню «enable, diable, exit». то, что я хочу сделать, это, когда R.id.menu_enable_bt выбран, я хочу, чтобы отключить его с помощьюКак я могу изменить видимость элемента меню внутри onOptionsItemSelected (..)
menu.findItem(R.id.menu_enable_bt).setVisible(false);
, но я не могу назвать
menu.findItem(R.id.menu_enable_bt).setVisible(false);
изнутри onOptionsItemSelected (..) метод.
, как я могу изменить видимость пункта меню внутри onOptionsItemSelected (..)
КОД:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
Log.w(TAG, SubTag.msg("onCreateOptionsMenu"));
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu, menu);
if (this.mBTAdapter.isEnabled()) {
menu.findItem(R.id.menu_enable_bt).setVisible(false);
menu.findItem(R.id.menu_disable_bt).setVisible(true);
} else {
menu.findItem(R.id.menu_enable_bt).setVisible(true);
menu.findItem(R.id.menu_disable_bt).setVisible(false);
}
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
super.onOptionsItemSelected(item);
Log.w(TAG, SubTag.msg("onOptionsItemSelected"));
switch (item.getItemId()) {
case R.id.menu_enable_bt:
Log.d(TAG, SubTag.bullet("onOptionsItemSelected", "menu_enable_bt"));
//menu.findItem(R.id.menu_enable_bt).setVisible(false); **how to do this**
this.mATEnableBT = new ATEnableBT();
this.mATEnableBT.execute();
break;
case R.id.menu_disable_bt:
Log.d(TAG, SubTag.bullet("onOptionsItemSelected", "menu_disable_bt"));
break;
case R.id.menu_exit:
Log.d(TAG,SubTag.bullet("onOptionsItemSelected", "menu_exit"));
finish();
break;
}
return super.onOptionsItemSelected(item);
}
но я думаю, что я все еще выполняю ту же работу с onCreateOptionsMenu(), и я должен использовать некоторые переменные, описывающие, что должно быть видимым ... но мне нужно что-то вроде развязывания элемента, чтобы не сделать, например, не clickable после касания – user2121
Если вы прочитали javadoc для метода, который я связал, он определенно говорит, что он используется для причины, о которой вы упоминаете. onCreateOptionsMenu используется для создания меню ONCE, а затем он снова используется с этой точки. После того, как он будет создан один раз, вы просто измените его после этого. Это стандартная практика. –