gpt4 book ai didi

java - 用 JSON 填充数组,但退出方法后丢失信息

转载 作者:行者123 更新时间:2023-12-02 03:34:13 25 4
gpt4 key购买 nike

我试图在这里创建一个列表,但问题是,在我用信息填充数组 daysList 后,退出 onResponse 后所有内容都会丢失。

如果我在 onResponse 方法内设置 textview,它可以工作,但如果我在外部执行此操作(如本例),则不会,我会得到空指针异常。

我知道我必须将数组定义为静态才能保留数据,但它也不起作用!我该如何解决这个问题?

public class MainFragment extends Fragment {

private View view;
private RequestQueue requestQueue;
private WeatherAdapter weatherAdapter;
public static WeatherForecast weatherForecast;
public static WeatherForecast.List[] daysList;

private ListView listView;
private TextView textView;

String URL = "requestURL";

public void onCreate (Bundle savedInstanceState) { super.onCreate(savedInstanceState); }

public View onCreateView ( LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
view = inflater.inflate(R.layout.main_fragment,null);

textView = (TextView) view.findViewById(R.id.textview);

requestQueue = Volley.newRequestQueue(getActivity());
JsonObjectRequest jsonWeatherRequest = new JsonObjectRequest(
URL,
null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
weatherForecast = parseWeatherToJson(response.toString());
daysList = weatherForecast.getList();
//textView.setText("Humidity is: " + daysList[0].getHumidity()); <--- If i set it here it works!
weatherAdapter.notifyDataSetChanged();
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.v(TAG, "On Error!");
}
}
);

requestQueue.add(jsonWeatherRequest);

textView.setText("Humidity is: " + daysList[0].getHumidity()); // <---- This throws nullpointer.
}

最佳答案

jsonWeatherRequest 是一个异步请求,它会到达服务器并在 onResponse() 回调中获取响应。当您使用 onResponse() 外部的列表值设置 TextView 时,此时您的请求尚未完成,因此您的列表为空。

因此,如果您想访问该列表,则必须在 onResponse() 回调中执行此操作。

关于java - 用 JSON 填充数组,但退出方法后丢失信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37636204/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com