在Android中的片段中使用Volley解析URL中的json [英] Parsing json from url with Volley in a Fragment in Android
问题描述
我想用我的一个片段中的Volley从下面的URL解析json.问题是"onResponse"没有激活.我试图用Log和Toast Notification捕获异常.也没有任何例外.似乎OnResponse不会在Fragment中触发.
I want to parse json from the url below with Volley in one of my Fragment. The problem is that the "onResponse" does not activated. I tried to catch exception with Log and with Toast Notification. No any exception as well. It seems OnResponse doesnt fire in Fragment.
这是我的片段.
public class PlacesToVisitFragment extends Fragment {
public PlacesToVisitFragment() {
// Required empty public constructor
}
StringBuilder sb = new StringBuilder();
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_places_to_visit, container, false);
final TextView txt= (TextView)view.findViewById(R.id.textView8);
RequestQueue rq = Volley.newRequestQueue(getActivity().getApplicationContext());
String url= "http://www.flightradar24.com/AirportInfoService.php?airport=ORY&type=in";
StringRequest stringRequest = new StringRequest(Request.Method.GET, url,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
// Do something with the response
try{
JSONObject o = new JSONObject(response);
JSONArray values=o.getJSONArray("flights");
for ( int i=0; i< values.length(); i++) {
JSONObject sonuc = values.getJSONObject(i);
sb.append("Flight: " + sonuc.getString("flight") + "\n");
sb.append("name: " + sonuc.getString("name") + "\n\n");
}
txt.setText(sb.toString());
} catch (JSONException ex){}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
// Handle error
}
});
// Inflate the layout for this fragment
return view;
}
}
这是我从主要活动"导航到片段"的方式.
This is how I navigate to the Fragment from Main Activity.
if (id == R.id.nav_camera) {
PlacesToVisitFragment fragment = new PlacesToVisitFragment();
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.mainFrame, fragment);
ft.addToBackStack(null);
ft.commit();
}
我正在使用Android导航抽屉基本模板.感谢您的提前帮助.
I am using Android Navigation Drawer basic template. Thanks for your help in advance.
推荐答案
您缺少将请求排队的呼叫.在您的片段return view
之前之前,添加以下行:
You are missing the call to en-queue the request. Add this line before the return view
in your Fragment :
rq.add(stringRequest );
这篇关于在Android中的片段中使用Volley解析URL中的json的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!