我正在尝试将我的 Main 活动传递给具有正在运行的线程的 java 类。当线程被调用时,我必须在我的活动类中引用一些对象,这些对象做一些工作并更新 UI。我的代码看起来像这样。
/**
*
*/
public class MainActivity extends Activity {
Person person;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
person = new Person();
}
public void updateInfo(String action) {
person.setAction(action);
//redraw the person to the gui
ImageView image = (ImageView) findViewById(R.id.action);
int id = getResources().getIdentifier(person.getCurrentAction(),"drawable", getPackageName());
image.setImageResource(id);
}
}
/**
*
*/
public class ThreadClass {
private MainActivity mainActivity;
public SocketClient(MainActivity mainActivity) {
this.mainActivity = mainActivity;
new MyThread().start();
}
private class MyThread extends Thread {
public void run() {
try {
while(!isInterrupted() {
mainActivity.updateInfo("Person is running");
}
}
}
}
}
当我这样做时,我会收到错误消息,即我没有在正确的线程中更新视图。android.View.ViewRoot$CalledFromWrongThreadException。我在这里做错了什么?此外,这段代码很可能不会编译它的伪代码,因为我必须去掉所有其他逻辑。