私はAPIを使用しています。アプリのボタンをクリックすると、アプリケーションにデータを要求する同期ボイドが呼び出されます。次に、データはCReceiverによって実装されたメソッドuserInfoで返されます。ここで、返されたデータをTextViewに追加します。userInfoの情報をSystem.out.printlnできますが、それは機能しますが、TextViewを追加しようとすると、CalledFromWrongThreadExceptionが発生します。この情報でTextViewを更新する適切な方法は何ですか?
主な活動
public class MainActivity extends Activity implements CReceiver {
private CSocket c_client = new CSocket(this);
private TextView textLog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btnReqUser = (Button) findViewById(R.id.btnReqUser);
textLog = (TextView) findViewById(R.id.textLog);
btnReqUser.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
c_client.reqUser("roger");
}
});
}
@Override
public void userInfo(String firstName, String lastName, String address, String phone) {
// TODO Auto-generated method stub
textLog.append(firstName + " " + lastName + " " + address + " " + phone);
}
}
CSocket
public synchronized void reqUser(String userName) {
...
}