0

I have this code, which integrates a RecyclerView within a Fragment, but this line:

mRecyclerView = (RecyclerView) mRecyclerView.findViewById(R.id.list_data);

Gives me an error, it tells me that:

Unreachable statement

And I don't know why, any idea?

Here's the code I'm using:

public class KecamatanFragment extends Fragment {

    private static final String data_url = "http://xxxxxxxxxx/daftar/get_kecamatan.php"; // kasih link prosesnya

    RecyclerView mRecyclerView;
    RecyclerView.Adapter mAdapter;
    RecyclerView.LayoutManager mManager;
    ProgressDialog pd;
    ArrayList<ModelData> mItems;

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

        mRecyclerView = (RecyclerView) mRecyclerView.findViewById(R.id.list_data); <-- Unreachable statement
        mItems = new ArrayList<>();
        mRecyclerView.setLayoutManager(new GridLayoutManager(getActivity(), 3));
        mAdapter = new AdapterProcess(KecamatanFragment.this, mItems);
        mRecyclerView.setAdapter(mAdapter);

        loadjson();
    }
    enter code here
    //proses mengambil data
    private void loadjson(){
        pd.setMessage("Mengambil Data");
        pd.setCancelable(false);
        pd.show();

        JsonArrayRequest arrayRequest = new JsonArrayRequest(Request.Method.POST, data_url, null, new Response.Listener<JSONArray>() {
            @Override
            public void onResponse(JSONArray response) {
                pd.cancel();
                Log.d("volley", "response : " + response.toString());
                for (int i=0; i < response.length(); i++){
                    try {
                        JSONObject data = response.getJSONObject(i);
                        ModelData md = new ModelData();
                        md.setKecamatan(data.getString("kecamatan")); // memanggil nama array yang kita buat
                        mItems.add(md);
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
                mAdapter.notifyDataSetChanged();
            }
        }, new Response.ErrorListener(){

            @Override
            public void onErrorResponse(VolleyError error) {
                pd.cancel();
                Log.d("volley", "error : " + error.getMessage());
            }
        });
        Controller.getInstance().addToRequestQueue(arrayRequest);
    }
}
ישו אוהב אותך
  • 28,609
  • 11
  • 78
  • 96

2 Answers2

0

Unreachable statement

That's expected error, because you're stopping the onCreateView method after you're giving it a return statement:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    // You've already close the method when you're giving a return
    return inflater.inflate(R.layout.fragment_kecamatan, container, false);


    // so this won't be reachable, hence the unreachable error raised.
    mRecyclerView = (RecyclerView) mRecyclerView.findViewById(R.id.list_data);

    ...
}

So, you either need to inflate the Layout first and bind the view then return the inflated view or move the view binding after the return statement to another method.

ישו אוהב אותך
  • 28,609
  • 11
  • 78
  • 96
0

As mentioned by ישו אוהב אותך, You're returning the inflated view immediately. keep a reference to the inflated view and return it at the end. Also, you probably want to use findViewById on the inflated view and not on mRecyclerView.

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

        mRecyclerView = (RecyclerView) view.findViewById(R.id.list_data);
        mItems = new ArrayList<>();
        mRecyclerView.setLayoutManager(new GridLayoutManager(getActivity(), 3));
        mAdapter = new AdapterProcess(KecamatanFragment.this, mItems);
        mRecyclerView.setAdapter(mAdapter);

        loadjson();

        return view;
    }
Chrisvin Jem
  • 3,940
  • 1
  • 8
  • 24