Закрытые пустые методы не работают в классе Fragment в onCreateView - PullRequest
0 голосов
/ 24 апреля 2020

У меня есть проблема, я пытаюсь заставить (частный метод void) работать с моим фрагментом в (onCreateView), но он не работает.

Как будто я помещаю код непосредственно в onCreateView, он отлично работает без make это в private 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 ()? что не так?

1 Ответ

1 голос
/ 24 апреля 2020

Вы должны передать идентификатор методу getComment, чтобы он работал, как показано ниже

в onCreateView:

getComment(id);

и в вашем методе:

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

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...