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("요청 보냄.");
}