我一直在努力解決這個問題一段時間,而且我在stackoverflow上找到的其他解決方案都解決了我的問題。在處理程序中設置TextView可見性時出錯
我的UI線程的處理程序:
//Global declarations
private UIHandler mHandler;
class UIHandler extends Handler {
TextView actionTV, objectTV;
public UIHandler(TextView t1,TextView t2){
actionTV = t1;
objectTV = t2;
}
@Override
public void handleMessage(Message msg) {
// a message is received; update UI text view
actionTV.setVisibility(View.VISIBLE); //Throws "CalledFromWrongThreadExc"
objectTV.setVisibility(View.VISIBLE);
System.out.println("Received Message");
}
}
//Inside of onCreate()
actionText = (TextView) findViewById(R.id.diceAction);
objectText = (TextView) findViewById(R.id.diceObject);
mHandler = new UIHandler(actionText,objectText);
//Inside of onClick
renderer.rollDice(mHandler);
actionText.setVisibility(View.GONE);
objectText.setVisibility(View.GONE);
而且處理器從我的OpenGL渲染線程接收的消息。消息通過成功,正如我測試過的那樣。
我收到「action.setVisibility(View.VISIBLE)」行上的「CalledFromWrongThread」錯誤。我認爲將TextView傳遞給onCreate()中的Handler會解決問題,但它沒有。如果有人能指出我出錯的地方,我將不勝感激。
我在OnCreate()中創建它,然後將其傳遞給rollDice()中的渲染器。 – 2012-02-05 20:48:55