我一直在努力解决这个问题一段时间,而且我在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