【问题标题】:RecyclerView Android Studio on the Fragment raises a red line [duplicate]Fragment上的RecyclerView Android Studio引发红线[重复]
【发布时间】:2019-07-21 07:33:59
【问题描述】:

我有这段代码,它在片段中集成了一个RecyclerView,但是这一行:

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

给我一​​个错误,它告诉我:

Unreachable statement

我不知道为什么,有什么想法吗?

这是我正在使用的代码:

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);
    }
}

【问题讨论】:

    标签: android android-recyclerview


    【解决方案1】:

    无法到达的语句

    这是预期的错误,因为您在给它一个 return 语句后停止了 onCreateView 方法:

    @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);
    
        ...
    }
    

    因此,您要么需要先膨胀 Layout 并绑定视图,然后返回膨胀后的视图,要么将 return 语句后的视图绑定移动到另一个方法。

    【讨论】:

      【解决方案2】:

      正如 ישו אוהב אותך 所述,您将立即返回膨胀的视图。保留对膨胀视图的引用并在最后返回它。此外,您可能希望在膨胀视图上使用findViewById,而不是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;
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-07-24
        • 1970-01-01
        • 1970-01-01
        • 2022-01-19
        • 2021-09-07
        • 1970-01-01
        • 2018-10-29
        • 1970-01-01
        相关资源
        最近更新 更多