저는이 문제에 대해 지금 당분간 고민하고 있으며 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()로 전달합니다. –