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

时间:2011-07-18 11:57:04

标签: java android handler toast looper

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

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

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

1 个答案:

答案 0 :(得分: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();

可能有一种更简单的方法来处理这个问题。请参阅Android – Multithreading in a UI environment文档。