相同的碎片 - 一个是有效的,一个是无效的

时间:2015-02-09 01:52:14

标签: android fragment android-recyclerview recycler-adapter

我有两个片段,每个片段都是从滑动菜单中膨胀出来的。一个片段按预期工作,另一个片段关闭应用程序。除了名称之外,碎片是相同的。第二个在日志中有一个运行时,致命异常。

这是碎片:

public class FeedZFragment extends Fragment {
    private static final String TAG = "RecyclerViewExample";
    private List<FeedZ> feedItemList = new ArrayList<FeedZ>();
//added static might remove
    private static RecyclerView mRecyclerView;
    private static MyRecyclerAdapterZ adapter;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View rootView = inflater.inflate( R.layout.fragment_recyclerview, container, false);

        /* Allow activity to show indeterminate progress-bar */
        getActivity().requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);

        /* Initialize recycler view */
        mRecyclerView = (RecyclerView) getActivity().findViewById(R.id.my_recycler_view);
        mRecyclerView.setLayoutManager(new GridLayoutManager(getActivity(),2));

        /*Downloading data from below url*/
        final String url = "http://www.thisismysite.com/a.json";
        new AsyncHttpTask().execute(url);
        return rootView;
    }

    public class AsyncHttpTask extends AsyncTask<String, Void, Integer> {

     /*   @Override
        protected void onPreExecute() {
            setProgressBarIndeterminateVisibility(true);
        }*/

        @Override
        protected Integer doInBackground(String... params) {
            InputStream inputStream = null;
            Integer result = 0;
            HttpURLConnection urlConnection = null;

            try {
                /* forming th java.net.URL object */
                URL url = new URL(params[0]);
                urlConnection = (HttpURLConnection) url.openConnection();

                /* for Get request */
                urlConnection.setRequestMethod("GET");
                int statusCode = urlConnection.getResponseCode();

                /* 200 represents HTTP OK */
                if (statusCode ==  200) {
                    BufferedReader r = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
                    StringBuilder response = new StringBuilder();
                    String line;
                    while ((line = r.readLine()) != null) {
                        response.append(line);
                    }

                    parseResult(response.toString());
                    result = 1; // Successful
                }else{
                    result = 0; //"Failed to fetch data!";
                }

            } catch (Exception e) {
                Log.d(TAG, e.getLocalizedMessage());
            }
            return result; //"Failed to fetch data!";
        }

        @Override
        protected void onPostExecute(Integer result) {
           // setProgressBarIndeterminateVisibility(false);
            /* Download complete. Lets update UI */
            if (result == 1) {
                adapter = new MyRecyclerAdapterZ(getActivity(), feedItemList);
                mRecyclerView.setAdapter(adapter);
            } else {
                Log.e(TAG, "Failed to fetch data!");
            }
        }
    }

    private void parseResult(String result) {
        try {
            JSONObject response = new JSONObject(result);
            JSONArray products = response.optJSONArray("products");

            /*Initialize array if null*/
            if (null == feedItemList) {
                feedItemList = new ArrayList<FeedZ>();
            }

            for (int i = 0; i < products.length(); i++) {
                JSONObject product = products.optJSONObject(i);

                FeedZ item = new FeedZ();
                item.setTitle(product.optString("title"));
                item.setImage_url(product.optString("image_url"));
                item.setPackage_url(product.optString("package_url"));
                item.setIds(product.optString("ids"));
                feedItemList.add(item);
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }
}

错误是:

java.lang.NullPointerException
            at com.nmthemes.WallFragment.onCreateView(WallFragment.java:44)

解: 它们并不完全相同。
getActivity().findViewById(R.id.my_recycler_view);应该是:

 rootView.findViewById(R.id.my_recycler_view);

我把它改成了一个而不是另一个。

0 个答案:

没有答案
相关问题