У меня есть проблема со следующей ошибкой в Android:
CalledFromWrongThreadException;: Только исходный поток, который создал иерархия просмотра может касаться своих представлений
Похоже, что когда я пытаюсь обновить Textview в своей активности, вызов для обновления TextView происходит из моей активности, но я все еще получаю вышеуказанную ошибку.
У меня это так:
OnCreate() - устанавливает кнопки и текстовое представление.
onStateChange() - прослушиватель уведомлений об изменениях состояния, когда это получает уведомление, если TextView Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text -
Когда я получаю уведомление о новом тексте, я пытаюсь изменить TextView так:
((TextView)findViewById(R.id.title)).setText("Some Text");
Но я получаю вышеуказанную ошибку.
Из поиска в googling, кажется, я должен использовать обработчик для изменения TextView или, возможно, использовать AsyncTask?
Может ли кто-нибудь объяснить, какой из них лучше использовать и почему?
РЕДАКТИРОВАТЬ: СОЕДИНЕННЫЕ КОДЫ СОДЕРЖАНИЯ:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
setContentView(R.layout.my);
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.my_title);
((TextView)findViewById(R.id.time)).setText("Hello Text");
findViewById(R.id.keyboardimage).setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Intent dialIntent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:"));
startActivity(dialIntent);
dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN,KeyEvent.FLAG_SOFT_KEYBOARD));
dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_BACK));
}
});
}
//CallBacks from running Service
private final ICallDialogActivity.Stub iCallDialogActivity = new ICallDialogActivity.Stub(){
@Override
public void onStateChanged(int callState)
throws RemoteException {
switch(callState){
case GlobalData.CALL_STATUS_IDLE:
break;
case GlobalData.CALL_STATUS_DISCONNECTING:
byeSetup();
break;
}
};
public void byeSetup(){
((TextView)findViewById(R.id.time)).setText("Bye Text");
findViewById(R.id.keyboardimage).setOnClickListener(new OnClickListener() {
public void onClick(View v) {
//Void the Button
}});
}