Как поменять иконку в раздутом меню - PullRequest
1 голос
/ 20 апреля 2020

Привет и спасибо за вашу помощь.

У меня проблема с изменением иконки в раздутом меню. Я могу успешно изменить значок при условии, что я использую 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.

Спасибо за вашу помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...