如何将我的Volley响应变为变量,因此我可以使用意图将值传递给另一个活动?

时间:2017-08-18 18:57:17

标签: android variables android-volley

我试图将我的Volley响应分配给变量,因此我可以使用意图将值传递给另一个活动。

我想知道为什么我的theMatchingContacts字符串在logcat中显示null。我看到了the matching contacts are null

我在活动的顶部宣布了theMatchingContacts

public class VerifyUserPhoneNumber extends AppCompatActivity  {

String theMatchingContacts;

如果用户已注册该应用,则属于onCreate

else {

         getPhoneContacts();

        // then start the next activity
        Intent myIntent = new Intent(VerifyUserPhoneNumber.this, PopulistoListView.class);
        //we need phoneNoofUser so we can get user_id and corresponding
        //reviews in the next activity
        myIntent.putExtra("keyName", phoneNoofUser);
        myIntent.putExtra("JsonArrayMatchingContacts", theMatchingContacts);
        System.out.println("phonenoofuser" + phoneNoofUser);
        System.out.println("the matching contacts are " + theMatchingContacts);

        VerifyUserPhoneNumber.this.startActivity(myIntent);

我看到phoneNoofUser没问题,这很有效。但对于theMatchingContacts,它会打印null。在getPhoneContacts()部分之前发生的函数Intents会调用下面的排球代码,因此应初始化getMatchingContacts,对吗?

我的凌空代码,更进一步,是:

StringRequest stringRequest = new StringRequest(Request.Method.POST, CHECKPHONENUMBER_URL,
        new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                    System.out.println(response);

                theMatchingContacts = response.toString();

                System.out.println(theMatchingContacts );

                   etc...etc...

response正确打印。代码的Volley部分中的theMatchingContacts也是如此。我无法将Intents代码放入Volley调用中,因为我的活动需要在调用startActivity之前做其他事情

2 个答案:

答案 0 :(得分:1)

Volley在后台线程中异步执行请求。所以主线程中的执行顺序如下:

  1. getPhoneContacts();被称为
  2. Volley在工作线程中启动网络请求
  3. 下一个Activity PopulistoListViewtheMatchingContacts
  4. 的空值开头
  5. 排球请求已完成,并在theMatchingContacts中设置onResponse的值。
  6. 因此,当您开始PopulistoListView Activity时,theMatchingContacts的值仍为null,因为排球请求尚未完成。

答案 1 :(得分:1)

您应该执行在Volley Request的OnResponse回调方法中启动新活动的代码,因为正如Bob所说,Volley Request是异步的,您希望在此请求完成后转到下一个Activity。