0

我有一个问题,我试图让(private void Method)在我的 Fragment 中( onCreateView )工作,但它不起作用。

就好像我将代码直接放入 onCreateView 一样,它可以正常工作,而无需将其放入私有 void()。

示例它如何不起作用:


public class classtwst {

    public class Status extends Fragment {
        private List<List_Data> list;
        private RecyclerView rvy;
        private MyAdapter adapter;
         String id;
        private static final String TAG = "Status";
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
            setHasOptionsMenu(true);
            View rootView = inflater.inflate(R.layout.status, container, false);
            Intent i = getActivity().getIntent();
            final String id = i.getStringExtra("id");

            rvy=(RecyclerView)rootView.findViewById(R.id.recyclerview);
            rvy.setHasFixedSize(true);
            rvy.setLayoutManager(new LinearLayoutManager(getActivity().getApplicationContext()));
            list=new ArrayList<>();
            adapter=new MyAdapter(list);

            getComment();//--------Here is the problem

            return rootView;
        }
        @Override
        public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
            super.onViewCreated(view, savedInstanceState);
        }

        private void  getComment(){
            final String HI ="http://000000000/Cm.php?id=" + id ;
            StringRequest stringRequest=new StringRequest(Request.Method.GET, HI, new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    try {
                        JSONObject jsonObject=new JSONObject(response);
                        JSONArray array=jsonObject.getJSONArray("info");
                        for (int i=0; i<array.length(); i++ ){
                            JSONObject ob=array.getJSONObject(i);
                            List_Data listData=new List_Data(ob.getString("namelast")
                                    ,ob.getString("contry"));
                            list.add(listData);
                        }
                        rvy.setAdapter(adapter);

                    } catch (JSONException e) {
                        e.printStackTrace();
                    }

                }
            }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {

                }
            });
            RequestQueue requestQueue = Volley.newRequestQueue(getActivity().getApplicationContext());
            requestQueue.add(stringRequest);
        }
    }


}

这个怎么运作:



public class classtwst {

    public class Status extends Fragment {
        private List<List_Data> list;
        private RecyclerView rvy;
        private MyAdapter adapter;
         String id;
        private static final String TAG = "Status";
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
            setHasOptionsMenu(true);
            View rootView = inflater.inflate(R.layout.status, container, false);
            Intent i = getActivity().getIntent();
            final String id = i.getStringExtra("id");

            rvy=(RecyclerView)rootView.findViewById(R.id.recyclerview);
            rvy.setHasFixedSize(true);
            rvy.setLayoutManager(new LinearLayoutManager(getActivity().getApplicationContext()));
            list=new ArrayList<>();
            adapter=new MyAdapter(list);

            final String HI ="http://000000000/Cm.php?id=" + id ;
            StringRequest stringRequest=new StringRequest(Request.Method.GET, HI, new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    try {
                        JSONObject jsonObject=new JSONObject(response);
                        JSONArray array=jsonObject.getJSONArray("info");
                        for (int i=0; i<array.length(); i++ ){
                            JSONObject ob=array.getJSONObject(i);
                            List_Data listData=new List_Data(ob.getString("namelast")
                                    ,ob.getString("contry"));
                            list.add(listData);
                        }
                        rvy.setAdapter(adapter);

                    } catch (JSONException e) {
                        e.printStackTrace();
                    }

                }
            }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {

                }
            });
            RequestQueue requestQueue = Volley.newRequestQueue(getActivity().getApplicationContext());
            requestQueue.add(stringRequest);


            return rootView;
        }
        @Override
        public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
            super.onViewCreated(view, savedInstanceState);
        }



    }


}


那么我怎样才能让它作为私人 void getComment() 工作?有什么问题?

4

1 回答 1

0

您必须将 id 传递给getComment方法才能使其工作,如下所示

onCreateView

getComment(id);

并在您的方法中:

private void getComment(String id){
//your code
}

希望这可以帮助

于 2020-04-24T17:42:22.027 回答