0

我试图从这个被覆盖的方法中设置一个类变量。我知道这是在另一个线程中执行的。如果我从那里输出它,我会得到价值。如果我在下面的方法中输出它,则值为空。

如何以正确的方式设置此类变量?

public class MainActivity extends AppCompatActivity {

    private String[] mRestTitles = new String[2];

    JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null,
            new Response.Listener<JSONObject>() {
                @Override
                public void onResponse(JSONObject response) {
                    try {
                        JSONObject rootObject = response.getJSONObject("_embedded");
                        JSONArray users = rootObject.getJSONArray("users");

                        for (int i = 0; i < users.length(); i++) {

                            JSONObject o = users.getJSONObject(i);
                            mRestTitles[i] = o.getString("firstName");

                            Log.d("item", mRestTitles[i]);
                        }

                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    Log.d("erro", error.toString());
                }
            }

    );

    queue.add(request);


public ArrayList<Entry> generateEntryList(){

    String[] entryTitles = getResources().getStringArray(R.array.entry_names);
    String[] entryDescriptions = getResources().getStringArray(R.array.entry_description);

    ArrayList<Entry> entries = new ArrayList<>();

    for(int i = 0; i < mRestTitles.length; i++){
        // mRestTitles is here null
        Log.d("foo", mRestTitles[i]);
        entries.add(new Entry(mRestTitles[i], entryDescriptions[i]));
    }

    return entries;
}
4

1 回答 1

0

请按照以下步骤处理这种情况:

1)使用参数作为变量创建自己的接口(必须在任何地方使用)

public interface yourInterface
{
    public void updateMyVariable(String variable);
}

2)在您想要接收变量值的任何地方实现该接口。

@override
public void updateMyVariable(String variable)
{
  //get the value here 
}

3)一旦你像这样获得变量的值,就从你的 onResponse 方法调用接口。

yourInterface.updateMyVariable( VariableToBeUsed );

确保 yourInterface 对象具有对正在实现/覆盖该功能的活动的上下文的引用。

于 2017-11-27T20:56:43.080 回答