Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.02.2019, 18:07   #1
Mopchik
 
Регистрация: 13.01.2019
Сообщений: 6
Печаль [Java] Как исправить ошибку "Unable to add window -- token null is not valid; is your activity running?"

Пишу приложение Android Studio. Надо добавить MusicController в приложении. При нажатии на кнопку запускается новая активность, а в ней - сам MusicController. По крайней мере так должно было быть. Но что-то пошло не по плану. Совершенно не понимаю, что логи пытаются мне сказать. Вот полный стактрэйс:

Код:
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mopchik.mopchik/com.mopchik.mopchik.ControllerActivity}: android.view.WindowManager$BadTokenException: :confused:
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2916)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3051)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1811)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:193)
        at android.app.ActivityThread.main(ActivityThread.java:6694)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
     Caused by: android.view.WindowManager$BadTokenException: Unable to add window -- token null is not valid; is your activity running?
        at android.view.ViewRootImpl.setView(ViewRootImpl.java:806)
        at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:356)
        at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:94)
        at android.widget.MediaController.show(MediaController.java:364)
        at com.mopchik.mopchik.Controller.show(Controller.java:39)
        at com.mopchik.mopchik.ControllerActivity.onCreate(ControllerActivity.java:36)
        at android.app.Activity.performCreate(Activity.java:7136)
        at android.app.Activity.performCreate(Activity.java:7127)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1272)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2896)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3051)*
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)*
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)*
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)*
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1811)*
        at android.os.Handler.dispatchMessage(Handler.java:106)*
        at android.os.Looper.loop(Looper.java:193)*
        at android.app.ActivityThread.main(ActivityThread.java:6694)*
        at java.lang.reflect.Method.invoke(Native Method)*
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)*
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)*
Дальше попробую максимально подробно описать код, если лень читать, попробуйте дать хотя бы наводку, а то, повторюсь, совсем нет идей, как это исправить.

Структура, собственно, следующая. Есть MusicFragment - это фрагмент, в котором инициализируются все аудиозаписи устройства, затем они с помощью адаптера обрабатываются и передаются в ListView. Этот ListView я закидываю в модельный класс, так как он понадобится позже в другой активности. Уже в другой активности находится кнопка, повторюсь, она находится НЕ в MusicFragment, её обработчик тоже. При нажатии на неё из той самой НЕ-MusicFrament-активности запускается новая активность, в которой следующий код должен отобразить MusicController. Но он не отображает. Самое занятное, что тот же самый код исправно работает с MusicFragment. Так что я думаю, тут какая-то путаница с context-ами, также была мысль, что нельзя через модельные классы перекидывать View элементы. А вы как думаете? Как это исправить?

Код:
Controller controller=new Controller(this);
controller.setMusicSrv(Model.instance().getMusicSrv());
controller.setController();
controller.show();

Вот код класса Controller:



Код:
public class Controller implements MediaPlayerControl {


    public MusicController controller;
    public Context context;
    public ListView songView;
    public MusicService musicSrv;
    public boolean playbackPaused = false;

    public Controller(Context context) {
        this.context = context;
    }



        public void setMusicSrv(MusicService musicSrv){this.musicSrv=musicSrv;}

        public void show(){
            controller.show(0);
            }


            private void playNext() {
                musicSrv.playNext();
            }

            //play previous
            private void playPrev() {
                musicSrv.playPrev();
            }

            public void setController() {

                songView = Model.instance().getSongView();

                controller = new MusicController(context);

                controller.setPrevNextListeners(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        playNext();
                    }
                }, new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        playPrev();
                    }
                });
                controller.setMediaPlayer(this);
                controller.setAnchorView(songView);
                controller.setEnabled(true);
            }

            @Override
            public void start() {
                musicSrv.go();
            }

            @Override
            public void pause() {
                musicSrv.pausePlayer();
            }

            @Override
            public int getDuration() {
                    return musicSrv.getDur();
            }

            @Override
            public int getCurrentPosition() {
                    return musicSrv.getPosn();
            }

            @Override
            public void seekTo(int pos) {
                musicSrv.seek(pos);
            }

            @Override
            public boolean isPlaying() {
                    return musicSrv.isPng();
            }

            @Override
            public int getBufferPercentage() {
                return 0;
            }

            @Override
            public boolean canPause() {
                return true;
            }

            @Override
            public boolean canSeekBackward() {
                return true;
            }

            @Override
            public boolean canSeekForward() {
                return true;
            }

            @Override
            public int getAudioSessionId() {
                return 0;
            }
        }
Mopchik вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите исправить ошибку в строке for(p=s; (p=strstr(p, "000"))!=NULL; ) (значение типа char нельзя присвоить сущности типа char DEXTER322 Помощь студентам 1 22.02.2017 17:51
выдает ошибку "is not a valid integer value'. Марфа23 Помощь студентам 5 09.04.2016 13:25
Window 7 выбивает ошибку 0x0000004e mostovoi Windows 1 05.12.2012 08:41
Как исправить ошибку java.lang.NullPointerException при тестировании методов ? NickolayNest Помощь студентам 3 03.02.2012 10:14