如果这有一个微不足道的答案,我想道歉,但我似乎无法为这种情况提出模式/流程。
我正在使用Android 异步 Http 客户端,它在完成请求时提供回调。我想这是我感到困惑的地方,因为我不知道在哪里使用该库。
这是我的设置:
数据类.java
public class DataClass {
String created_date = null;
String username = null;
String details = null;
private static AsyncHttpClient client;
public DataClass(String id) {
client = new AsyncHttpClient();
GetDataObject(id);
}
public void GetDataObject(String id) {
//...build RequestParams()
client.post(get_data_url, params, new JsonHttpResponseHandler(){
public void onSuccess(int statusCode, Header[] headers, byte[] response) {
String response_string = new String(response);
//...parse JsonObject
created_data = jsonObject.getString("date");
username = jsonObject.getString("username");
details = jsonObject.getString("details");
// all dataClass instance variables accessed here are null.
Log.d("Created: ", created_data); //returns somedate
Log.d("Username: ", username); //returns someusername
}
});
}
}
ShowDataActivity.java
public class ShowDataActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_show_question);
Intent intent = getIntent();
String id = intent.getStringExtra("id");
DataClass dataClass = new DataClass(id);
// all dataClass instance variables accessed here are null.
Log.d("Created: ", dataClass.created_data); //returns null
Log.d("Username: ", dataClass.username); //returns null
}
}
当我在 RestClient 回调中的实例变量赋值上放置断点时,我可以看到它们不是空的,而是其中包含正确的数据。
我已经搜索了一段时间,看到一些内置的 Android 库,如Loaders、ContentObserver和BoradcastReceivers可能会有所帮助,但我不知道如何将它们与Android Asynchronous Http Client结合使用。
请注意,上面的示例不完整,但所有相关信息都在那里。
如果需要更多信息,请告诉我。谢谢你。
问题:
当我在 ShowDataActivity 中实例化 DataClass 时,我的 dataClass 实例变量为空。我猜这是因为在我实例化对象之后的回调中分配了变量。不太确定如何问这个问题,但我怎样才能确保DataClass dataClass = new DataClass(id);
使用来自互联网的数据进行初始化。