0

如果这有一个微不足道的答案,我想道歉,但我似乎无法为这种情况提出模式/流程。

我正在使用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 库,如LoadersContentObserverBoradcastReceivers可能会有所帮助,但我不知道如何将它们与Android Asynchronous Http Client结合使用。

请注意,上面的示例不完整,但所有相关信息都在那里。

如果需要更多信息,请告诉我。谢谢你。

问题: 当我在 ShowDataActivity 中实例化 DataClass 时,我的 dataClass 实例变量为空。我猜这是因为在我实例化对象之后的回调中分配了变量。不太确定如何问这个问题,但我怎样才能确保DataClass dataClass = new DataClass(id);使用来自互联网的数据进行初始化。

4

0 回答 0