`无法在继承的Activity中创建处理程序... Looper.prepare()`

Luk*_* Vo 1 java android handler toast looper

我有一个Activity适用于所有代码的游戏(活动A).然后我Activity为我的新游戏模式创建一个新的(活动B),即extends活动A.但是,当遇到Toast行时,活动B突然抛出异常(活动A很好地显示Toast):

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

活动B仅覆盖负载级方法,没有任何差别!

Onu*_*hin 9

试试这个:

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();
Run Code Online (Sandbox Code Playgroud)

可能有一种更简单的方法来处理这个问题.请参阅Android - UI环境文档中的多线程.