解決CalledFromWrongThreadException我會盡量保持簡單:無法與處理程序
在我的主要活動我作出處理:
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);
}
我發現此解決方案之前,但無法使其工作。我會再看看它。謝謝 – Michel 2010-05-12 13:15:18
爲什麼你要在線程中設置setContentView(R.layout.routeplanner)?將它設置在onCreate中,然後通過findViewById(R.id.myview)更新你的視圖/佈局,並設置正確的內容/值/可見性 – 2010-05-12 13:39:01
還有比'routeplanner'更多的視圖(組),所以我想要一個處理程序所有視圖 – Michel 2010-05-12 13:45:41