如果这有一个简单的答案,我想道歉,但我似乎无法为这种情况提出模式/流程。
我正在使用Android Asynchronous Http Client,它在完成请求时提供回调。我想这是我感到困惑的地方,因为我不知道在哪里使用这个库。
以下是我的设置:
DataClass.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回调中的实例变量赋值上放置断点时,我可以看到它们不是null,而是包含正确的数据。
我一直在搜索并看到一些内置的Android库,例如Loaders,ContentObserver和BoradcastReceivers可能有所帮助,但我不知道如何在与Android Asynchronous Http Client结合。
请注意上述示例不完整,但所有相关信息都在那里。
如果需要更多信息,请与我们联系。谢谢。
问题:
当我在ShowDataActivity中实例化DataClass时,我的dataClass实例变量为null。我猜它是因为变量是在我实例化对象之后的回调中分配的。不确定如何询问此问题,但如何确保DataClass dataClass = new DataClass(id);
初始化来自互联网的数据。