Привет и спасибо за вашу помощь.
У меня проблема с изменением иконки в раздутом меню. Я могу успешно изменить значок при условии, что я использую onOptionsItemSelected. Если я попытаюсь сделать это откуда-то еще, это не будет сделано. Что я делаю не так? Спасибо за вашу помощь.
test() {
if (dbHandler.play == false) {
//the line below wouldn't work
menu.getItem(1).setIcon(ContextCompat.getDrawable(this, R.drawable.ic_play_arrow_black_24dp));
}
}
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.play:
if (dbHandler.play == true) {
menu.getItem(1).setIcon(ContextCompat.getDrawable(this, R.drawable.ic_play_arrow_black_24dp));
} else {
menu.getItem(1).setIcon(ContextCompat.getDrawable(this, R.drawable.ic_stop_black_24dp));
}
return true;
default:
return super.onOptionsItemSelected(item);
}
}
это журнал
W/Binder: Caught a RuntimeException from the binder stub implementation.
android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
at android.view.ViewRootImpl.checkThread(ViewRootImpl.java:8191)
at android.view.ViewRootImpl.requestLayout(ViewRootImpl.java:1420)
at android.view.View.requestLayout(View.java:24454)
at android.view.View.requestLayout(View.java:24454)
at android.view.View.requestLayout(View.java:24454)
at android.view.View.requestLayout(View.java:24454)
at android.view.View.requestLayout(View.java:24454)
at android.view.View.requestLayout(View.java:24454)
at android.view.View.requestLayout(View.java:24454)
at android.view.View.requestLayout(View.java:24454)
at android.widget.TextView.setCompoundDrawables(TextView.java:2918)
at androidx.appcompat.view.menu.ActionMenuItemView.setIcon(ActionMenuItemView.java:231)
at androidx.appcompat.view.menu.ActionMenuItemView.initialize(ActionMenuItemView.java:126)
at androidx.appcompat.widget.ActionMenuPresenter.bindItemView(ActionMenuPresenter.java:211)
at androidx.appcompat.view.menu.BaseMenuPresenter.getItemView(BaseMenuPresenter.java:188)
at androidx.appcompat.widget.ActionMenuPresenter.getItemView(ActionMenuPresenter.java:197)
at androidx.appcompat.view.menu.BaseMenuPresenter.updateMenuView(BaseMenuPresenter.java:105)
at androidx.appcompat.widget.ActionMenuPresenter.updateMenuView(ActionMenuPresenter.java:230)
at androidx.appcompat.view.menu.MenuBuilder.dispatchPresenterUpdate(MenuBuilder.java:298)
at androidx.appcompat.view.menu.MenuBuilder.onItemsChanged(MenuBuilder.java:1069)
at androidx.appcompat.view.menu.MenuItemImpl.setIcon(MenuItemImpl.java:519)
at com.indykstudio.izilimi.MainActivity.onUtteranceCompleted(MainActivity.java:338)
at android.speech.tts.UtteranceProgressListener$1.onDone(UtteranceProgressListener.java:162)
at android.speech.tts.TextToSpeech$Connection$1.onSuccess(TextToSpeech.java:2131)
at android.speech.tts.ITextToSpeechCallback$Stub.onTransact(ITextToSpeechCallback.java:202)
at android.os.Binder.execTransactInternal(Binder.java:1021)
at android.os.Binder.execTransact(Binder.java:994)
Process 26857 terminated.
Спасибо за вашу помощь.