【发布时间】:2013-12-14 18:38:59
【问题描述】:
我有一个活动,在显示 Text/EditText 字段之前,我想调用服务器以获取详细信息,然后根据从服务器返回的数据对字段进行setText。
以下是我正在做的事情,但这些字段似乎没有从服务器获取数据。我想是因为我打电话给AsyncTask,它在后台运行,同时这些字段显示给用户。
问题
android 是如何处理这个问题的?我应该使用什么模式?
从MainActivity.java 调用此活动,如下所示:
Intent act = new Intent(getApplicationContext(), MySecondActivity.class);
create.putExtra("theId", "138");
startActivity(create);
在MySecondActivity.java 中,我执行以下操作:
public class MySecondActivity extends SherlockActivity {
private EditText fieldOne;
private EditText fieldTwo;
private MyObj obj = new MyObj();
private int id;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.shared_activity);
fieldOne = (EditText)findViewById(R.id.field_one);
fieldTwo = (EditText)findViewById(R.id.field_two);
id = Integer.parseInt(getIntent().getStringExtra("theId"));
new FetchDetail().execute();
//If I put the below two lines inside the AsyncTask then I get an error:
//"Only the original thread that created a view hierarchy can touch its views."
fieldOne.setText(obj.getOne()); //
fieldTwo.setText(obj.getTwo()); //
}
class FetchDetail extends AsyncTask<String, String, String> {
@Override
protected String doInBackground(String... strings) {
final RestAdapter restAdapter = new
RestAdapter.Builder().setServer("http://10.0.2.2:8080").build();
final MyTaskService apiManager = restAdapter.create(MyTaskService.class);
final MyObj obj = apiManager.getDetails(id);
return null;
}
}
}
【问题讨论】:
标签: android android-intent android-asynctask