我会尽量保持简单:
在我的主要活动中,我创建了一个处理程序:
public class ARViewer extends ARDisplayActivity {
public final MHandler mHandler = new MHandler(this);
public void onCreate(Bundle savedInstanceState) {
...
MHandler 类:
public final class MHandler extends Handler{
//main activity
private ARViewer arnv;
public MHandler(ARViewer arnv){
this.arnv = arnv;
}
@Override
public void handleMessage(Message msg) {
...
case H_RR :
arnv.setContentView(R.layout.routeplanner);
break;
...
super.handleMessage(msg);
}
}
但是,如果我从其他类中的回调函数(肯定是从其他线程)调用handleMessage方法,我仍然会收到异常消息:CalledFromWrongThreadException (Only the original thread that created a view hierarchy can touch its views)
:
public void rFound(Route route) {
Message msg = new Message();
msg.what = MHandler.H_RR;
ARViewer.arnv.mHandler.handleMessage(msg);
}
您不需要参考那里的活动。
创建新的可运行文件,在其中执行 UI 操作。并执行 mHandler.post(myUIRunnable);
例子在这里:http://developer.android.com/guide/appendix/faq/commontasks.html#threading http://developer.android.com/guide/appendix/faq/commontasks.html#threading
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)