#java #android
#java #Android
Вопрос:
Я пытаюсь изменить видимость пункта меню. Это то, что у меня есть:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
actionStop = menu.findItem(R.id.action_stop);
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.appbar_menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
if(item.getItemId() == R.id.action_roll){
rollDice();
actionStop.setVisible(true);
}
Я делаю это actionStop.setVisible(true);
, чтобы изменить значение.
Однако я получаю эту ошибку:
java.lang.NullPointerException: Attempt to invoke interface method 'android.view.MenuItem android.view.MenuItem.setVisible(boolean)' on a null object reference
Комментарии:
1. Остальная часть сообщения об ошибке сообщит вам, какая строка вызвала ошибку. Начните с этого, чтобы выяснить проблему
Ответ №1:
Можете ли вы попробовать поместить эту строку
actionStop = menu.findItem(R.id.action_stop);
после того, как меню было раздуто? и попробуйте использовать item для установки видимости вместо переменной?
ie,
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.appbar_menu, menu);
actionStop = menu.findItem(R.id.action_stop);
return true;
}
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
if(item.getItemId() == R.id.action_roll){
rollDice();
item.setVisible(true);
}
Комментарии:
1. Я больше не получаю ошибку, но видимость не меняется. Я думаю, это потому, что actionShop принадлежит другому элементу. Итак, в основном при нажатии на item1 измените видимость item2.
2. Изменение положения строки заставило его работать. Но видимость по-прежнему остается actionStop.setVisible