これが些細な答えである場合はお詫び申し上げますが、このシナリオのパターン/フローを思い付くことができないようです.
リクエストが完了したときにコールバックを提供する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 ではなく、正しいデータが含まれていることがわかります。
私はしばらく探していて、Loaders、ContentObserver、BoradcastReceiversなどの組み込みの Android ライブラリが役立つかもしれませんが、それらをAndroid Asynchronous Http Clientと組み合わせて使用する方法がわかりません。
上記の例は完全ではありませんが、関連する情報はすべてそこにあります。
さらに情報が必要な場合はお知らせください。ありがとうございました。
問題:
ShowDataActivity で DataClass をインスタンス化すると、dataClass インスタンス変数が null になります。オブジェクトをインスタンス化した後のコールバックで変数が割り当てられているためだと思います。これを尋ねる方法がよくわかりませんがDataClass dataClass = new DataClass(id);
、インターネットからのデータで初期化されることを確認するにはどうすればよいですか。