如何使用Android Studio中onResponse方法中定义的变量值
我所需要的只是保存数据库中的一对列表,以便稍后在代码中使用它们,但是当在onResponse方法之外调用时,列表总是显示为空。我对Android Studio和数据库都是新手。我使用了Volley库,这里是代码部分的“摘录”,在数组是否为空的情况下,这部分代码给了我一些打印问题:如何使用Android Studio中onResponse方法中定义的变量值,android,json,database,android-volley,jsonresponse,Android,Json,Database,Android Volley,Jsonresponse,我所需要的只是保存数据库中的一对列表,以便稍后在代码中使用它们,但是当在onResponse方法之外调用时,列表总是显示为空。我对Android Studio和数据库都是新手。我使用了Volley库,这里是代码部分的“摘录”,在数组是否为空的情况下,这部分代码给了我一些打印问题: public class Fragmento extends Fragment { ArrayList<String> codes = new ArrayList<String>
public class Fragmento extends Fragment {
ArrayList<String> codes = new ArrayList<String>();
ArrayList<String> names = new ArrayList<String>();
ArrayList<ArrayList<String>> thing= new ArrayList<ArrayList<String>>();;
RequestQueue requestQueue;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
load();
System.out.println(thing); //ARRAY IS EMPTY
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_fragmento, container, false);
}
private void load(){
JsonArrayRequest jsonArrayRequest= new JsonArrayRequest("the url here",new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
JSONObject jsonObject = null;
for (int i = 0; i < response.length(); i++) {
try {
jsonObject = response.getJSONObject(i);
codes.add(jsonObject.getString("codigo"));
names.add(jsonObject.getString("nombre"));
} catch (JSONException e) {
Toast.makeText(getContext(), e.getMessage(), Toast.LENGTH_LONG).show();
}
}
thing.add(codes);
thing.add(names);
System.out.println(thing);//ARRAY IS FULL
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(getContext(),error.getMessage(), Toast.LENGTH_LONG).show();
}
});
System.out.println(thing);//ARRAY IS EMPTY
requestQueue=Volley.newRequestQueue(getActivity());
requestQueue.add(jsonArrayRequest);
}
}
公共类Fragmento扩展了Fragment{
ArrayList代码=新的ArrayList();
ArrayList name=新的ArrayList();
ArrayList thing=新的ArrayList();;
请求队列请求队列;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
加载();
System.out.println(thing);//数组为空
}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
//为该碎片膨胀布局
返回充气机。充气(R.layout.fragmento\u fragmento,容器,假);
}
专用空心荷载(){
JsonArrayRequest JsonArrayRequest=newjsonarrayrequest(“此处的url”,new Response.Listener()){
@凌驾
公共void onResponse(JSONArray响应){
JSONObject JSONObject=null;
对于(int i=0;i
因为在load()
函数中,您在后台使用JsonArrayRequest
调用API,所以System.out.println(thing)
在onCreate()
中调用,然后从服务器获得响应。这就是为什么thing
数组是空的。SharedReferences是ans。我如何让程序等待服务器的响应,有一条评论说SharedReferences是答案,我应该试试吗?很简单,你可以在onResponse()
下执行代码。