`无法创建处理......活套。prepare()`在继承活动 [英] `Can't create handler...Looper.prepare()` in inherited Activity

查看:176
本文介绍了`无法创建处理......活套。prepare()`在继承活动的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有所有的code行之有效一个游戏活动(活动A)。然后,我创建了我的新的游戏模式一个新的活动(活动B),即扩展活动A.然而,当遇到吐司线,活动B突然抛出一个异常(活动A效果很好显示吐司):

无法创建内螺纹的处理程序已经不叫活套。prepare()

活动B只覆盖负载水平的方法,没有任何differrence!


解决方案

试试这个:

 处理程序innerHandler;(新主题(新的Runnable(){            @覆盖
            公共无效的run(){
                尺蠖prepare()。                innerHandler =新的处理程序(){
                    @覆盖
                    公共无效的handleMessage(消息消息){
                        Toast.make(...);
                    }                    @覆盖
                    公共无效DispatchMessage函数(消息消息){
                        的handleMessage(消息);
                    }
                };                消息消息= innerHandler.obtainMessage();
                innerHandler.dispatchMessage(消息);
                Looper.loop();
            }
        }))。开始();

有可能是处理这个问题的简单方法。请参阅 Android的 - 一个多线程环境下的UI 文档中的<。 / p>

I have a Game Activity (Activity A) that works well with all the code. Then I create a new Activity (Activity B) for my new game mode, that extends Activity A. However, when encounter the Toast line, Activity B suddenly thrown an exception (Activity A works well showing the Toast):

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

Activity B only overrides a load-level method, no any differrence!

解决方案

Try this:

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();

There may be an easier way to handle the problem. Please refer to Android – Multithreading in a UI environment documentation.

这篇关于`无法创建处理......活套。prepare()`在继承活动的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆