마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

Fragment에서 함수호출 문의 드립니다. [closed]

0 추천

Json 파싱해서 리사이클뷰로 뿌려주는 테스트 소스입니다.

문제는 버튼을 클릭해서 동작하게 할때는 문제가 없지만

클릭 이벤트를 빼고 실행하면 오류가 발생을 합니다.

public class Fragment2 extends Fragment {
    static RequestQueue requestQueue;
    RecyclerView recyclerView;
    MovieAdapter adapter;

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

        /////////////////////////////////////////////////////////////////////////////////
        아래와 같이 버튼 클릭 이벤트로 처리하면 정상동작
        /////////////////////////////////////////////////////////////////////////////////
        Button button17 = (Button) rootView.findViewById(R.id.button2);
        button17.setOnClickListener(new View.OnClickListener() {
        
            @Override
            public void onClick(View rootView) {
                makeRequest();
            }
        });
        /////////////////////////////////////////////////////////////////////////////////
        아래와 같이 함수를 바로 호출하면 에러 발생
        /////////////////////////////////////////////////////////////////////////////////
        makeRequest();
        /////////////////////////////////////////////////////////////////////////////////
        
        if (requestQueue == null) {
            requestQueue = Volley.newRequestQueue(getActivity().getApplicationContext());
        }

        recyclerView = (RecyclerView) rootView.findViewById(R.id.recyclerView);

        LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity());
        recyclerView.setLayoutManager(layoutManager);

        adapter = new MovieAdapter();
        recyclerView.setAdapter(adapter);

        return rootView;
    }

    public void makeRequest() {
        String url = "http://www.kobis.or.kr/kobisopenapi/webservice/rest/boxoffice/searchDailyBoxOfficeList.json?key=24258683e583fa09cb007d36fd084860&targetDt=20191101";

        StringRequest request = new StringRequest(
                Request.Method.GET,
                url,
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {
                        println("응답 -> " + response);

                        processResponse(response);
                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        println("에러 -> " + error.getMessage());
                    }
                }
        ) {
            @Override
            protected Map<String, String> getParams() throws AuthFailureError {
                Map<String,String> params = new HashMap<String,String>();

                return params;
            }
        };

        request.setShouldCache(false);
        requestQueue.add(request);
        println("요청 보냄.");
    }

 

질문을 종료한 이유: 해답을 찾음
물어 (140 포인트) 님이 2019년 12월 18일 질문
물어님이 2019년 12월 18일 closed
...