Android ListView Volley FATAL EXCEPTION错误

时间:2015-02-22 17:25:32

标签: json listview android-fragments android-volley

我正在开发Android应用程序并创建幻灯片菜单。在幻灯片菜单中,我有“搜索”项。这是一个调用json的片段(使用volley)并将结果输入到自定义列表视图中。 现在,当我调用片段(使用调试模式)时,片段开始下载一些数据,但在json的一些记录下载应用程序崩溃后,我收到此错误:

E/AndroidRuntime﹕ FATAL EXCEPTION: main
    java.lang.NullPointerException
            at com.firstproject.fragment.SearchFragment.loadListView(SearchFragment.java:175)
            at com.firstproject.fragment.SearchFragment.access$000(SearchFragment.java:46)
            at com.firstproject.fragment.SearchFragment$1.onResponse(SearchFragment.java:105)
            at com.firstproject.fragment.SearchFragment$1.onResponse(SearchFragment.java:98)
            at com.android.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:60)
            at com.android.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:30)
            at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:99)
            at android.os.Handler.handleCallback(Handler.java:730)
            at android.os.Handler.dispatchMessage(Handler.java:92)
            at android.os.Looper.loop(Looper.java:213)
            at android.app.ActivityThread.main(ActivityThread.java:5225)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:525)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:741)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
            at dalvik.system.NativeStart.main(Native Method)

我在我调用json文件的地方附上我的代码(隐私删除url json)

请帮忙吗? 感谢

public class SearchFragment extends Fragment {

public SearchFragment(){}
private static final String url = "http://<server_name>/<folder>/data.json";

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

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    return inflater.inflate(R.layout.fragment_search, container, false);
}
ListView geoJSON;
String globalResponse="";
@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    String  tag_string_req = "string_req";

    final ProgressDialog pDialog = new ProgressDialog(getActivity());
    // Showing progress dialog before making http request
    pDialog.setMessage("Loading...");
    pDialog.show();
    RequestQueue mRequestQueue;
    Network network = new BasicNetwork(new HurlStack());
    //Cache cache = new DiskBasedCache(getCacheDir(), 1024 * 1024); // 1MB cap

    // Instantiate the RequestQueue with the cache and network.
    Cache cache = AppController.getInstance().getRequestQueue().getCache();
    mRequestQueue = new RequestQueue(cache, network);

    // Start the queue
    mRequestQueue.start();

    Cache.Entry entry = cache.get(url);
    if(entry != null){
        try {
            String data = new String(entry.data, "UTF-8");
            //loadListView(gobalResponse,0,1000);
            //Toast.makeText(getActivity(), "Cache utilized!", 0).show();
            // handle data, like converting it to xml, json, bitmap etc.,
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }

    }else{
        // Cached response doesn't exists. Make network call here

        StringRequest strReq = new StringRequest(Request.Method.GET,
                url, new Response.Listener<String>() {

            @Override
            public void onResponse(String response) {
                globalResponse=response;
                Globals.GlobalResponse=globalResponse;
                Log.d("", response.toString());
                loadListView(globalResponse,0,1000);

                //loadListView(response,0,1000);
                pDialog.hide();

            }
        }, new Response.ErrorListener() {

            @Override
            public void onErrorResponse(VolleyError error) {
                VolleyLog.d("", "Error: " + error.getMessage());
                //Toast.makeText(getApplicationContext(), error.getMessage()+"", 0).show();
                pDialog.hide();
            }
        });
        strReq.setShouldCache(true);
        //strReq.
        // Adding request to request queue
        AppController.getInstance().addToRequestQueue(strReq, tag_string_req);
    }

}

private ArrayList<GeoJsonResponse> globalResponseObject;//=new ArrayList<GeoJsonResposne>();


private void loadListView(String response,float lowerLimit,float upperLimit)

{

    try {
        JSONObject featureCollection=new JSONObject(response);
        globalResponseObject=new ArrayList<GeoJsonResponse>();
        JSONArray features=featureCollection.getJSONArray("features");
        for (int i = 0; i < features.length(); i++) {

            JSONObject properties=features.getJSONObject(i);
            float mag=Float.parseFloat(properties.getJSONObject("properties").getString("mag"));
            if(!(mag>=lowerLimit&&mag<upperLimit)) continue;
            Log.d("",properties.getJSONObject("properties").getString("author")
                            +   properties.getJSONObject("properties").getString("mag")
                            +   properties.getJSONObject("properties").getString("place")
                            +   properties.getJSONObject("geometry").getJSONArray("coordinates").getString(0)
                            +   properties.getJSONObject("geometry").getJSONArray("coordinates").getString(1)
                            +   properties.getJSONObject("geometry").getJSONArray("coordinates").getString(2)

            );
            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
            Date date1 = format.parse(properties.getJSONObject("properties").getString("time"));

            GeoJsonResponse obj=new GeoJsonResponse(
                    properties.getJSONObject("properties").getString("eventId"),
                    properties.getJSONObject("properties").getString("author"),
                    properties.getJSONObject("properties").getString("place"),
                    Double.parseDouble(properties.getJSONObject("properties").getString("mag")),
                    Double.parseDouble(properties.getJSONObject("geometry").getJSONArray("coordinates").getString(2)),
                    properties.getJSONObject("properties").getString("time"),date1,
                    Double.parseDouble(properties.getJSONObject("geometry").getJSONArray("coordinates").getString(0)),
                    Double.parseDouble(properties.getJSONObject("geometry").getJSONArray("coordinates").getString(1))

            );

            globalResponseObject.add(obj);}
        if(lowerLimit==0)
            Globals.geoJsonResponse=globalResponseObject;
        //  Collections.sort(globalResponseObject, new DateSorter());

        CustomListAdapter adpater=new  CustomListAdapter(getActivity()
                , globalResponseObject);
        adpater.notifyDataSetChanged();
        geoJSON.setAdapter(adpater);
        geoJSON.invalidate();
        geoJSON.invalidateViews();
        //, author, place, magnitude, distance, date)


    } catch (JSONException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }


}

}

0 个答案:

没有答案