`Не могу создать обработчик ... Looper.prepare ()` в унаследованном Activity - PullRequest
1 голос
/ 18 июля 2011

У меня есть игра Activity (Задание A), которая хорошо работает со всем кодом. Затем я создаю новый Activity (Упражнение B) для моего нового игрового режима, который extends Упражнение A. Однако, когда сталкиваются со строкой Toast, Упражнение B внезапно выдало исключение (Упражнение A хорошо работает, показывая Toast):

Can't create handler inside thread that has not called Looper.prepare()

Упражнение B переопределяет только метод уровня нагрузки, без различий!

1 Ответ

9 голосов
/ 18 июля 2011

Попробуйте это:

Handler innerHandler;

(new Thread(new Runnable() {

            @Override
            public void run() {
                Looper.prepare();

                innerHandler = new Handler() {
                    @Override
                    public void handleMessage(Message message) {
                        Toast.make(...);
                    }

                    @Override
                    public void dispatchMessage(Message message) {
                        handleMessage(message);
                    }
                };

                Message message = innerHandler.obtainMessage();
                innerHandler.dispatchMessage(message);
                Looper.loop();
            }
        })).start();

Возможно, существует более простой способ решения проблемы. Пожалуйста, обратитесь к Android - Многопоточность в среде пользовательского интерфейса Документация.

...