android / how to request REST api when change fragment?

14 views Asked by At

In HomeActivity

 private LongReviewFragment longReviewFragment = new LongReviewFragment();

 navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
        @Override
        public boolean onNavigationItemSelected(@NonNull MenuItem item) {
            navigationView.setCheckedItem(item);
            FragmentTransaction transaction = fragmentManager.beginTransaction();

            switch (item.getItemId()) {
                case R.id.drawer_mypage:
                    topAppbar.setTitle("마이페이지");
                    transaction.replace(R.id.frameLayout, mypageFragment).commitAllowingStateLoss();
                    break;
                case R.id.drawer_long:
                    topAppbar.setTitle("긴 글 리뷰 게시판");
                    transaction.replace(R.id.frameLayout, longReviewFragment).commitAllowingStateLoss();
                    break;
                case R.id.drawer_short:
                    topAppbar.setTitle("짧은 글 리뷰 게시판");
                    transaction.replace(R.id.frameLayout, shortReviewFragment).commitAllowingStateLoss();
                    break;
                case R.id.drawer_movie:
                    topAppbar.setTitle("영화");
                    transaction.replace(R.id.frameLayout, movieFragment).commitAllowingStateLoss();
                    break;
            }
            drawrLayout.close();
            return false;
        }
    });

In LongReviewFragment

public class LongReviewFragment extends Fragment {
private RecyclerView recyclerView;
ArrayList<LongReviewDataList> dataLists = new ArrayList<>();
LongReviewBoardRecyclerViewAdapter adapter = new LongReviewBoardRecyclerViewAdapter(dataLists);

@Override
public void onStart() {
    super.onStart();
    longReviewDataRequest();
}

@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_longreview_board, container, false);

    recyclerView = view.findViewById(R.id.recyViewLongReviewBoard);
    recyclerView.setLayoutManager(new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL,false));
    recyclerView.setAdapter(adapter);

    return view;
}

private void longReviewDataRequest(){
    RequestQueue Queue = Volley.newRequestQueue(getActivity());

    JSONObject jsonObject = new JSONObject();
    try {

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

    String URL = getString(R.string.server) + getString(R.string.viewLongReviewRecency);


    JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST, URL, jsonObject, new Response.Listener<JSONObject>() {
        @Override
        public void onResponse(JSONObject response) {
            try {
                Log.d(TAG, "onResponse: res:" + response.getString("res"));
                if(response.getString("res").equals("200")){
                    JSONArray dataJsonArray = response.getJSONArray("data");
                    for(int i = 0; i<dataJsonArray.length(); i++){
                        JSONObject object = dataJsonArray.getJSONObject(i);
                        int mbtiNum = object.getInt("user_mbti");
                        Resources res = getResources();
                        String[] mbtiArray = res.getStringArray(R.array.mbti_array);

                        dataLists.add(new LongReviewDataList(object.getString("_id"), object.getString("movie_id"), object.getString("movie_name"),
                                object.getString("title"), object.getString("user_id"), mbtiArray[mbtiNum],
                                object.getString("user_nickname"), object.getString("writing")));
                    }
                    adapter.notifyDataSetChanged();
                }

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


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

        }
    });
    Queue.add(jsonObjectRequest);
}

}

I want to get long review data when open long review fragment page. But LongReviewDataRequest is not working. I get 500 error. It is not server issue. All server is woking well. This type of issue happen in fragment replace logic.

request is not working in "onCreate", "OnCreateView()","onResume() too.

0

There are 0 answers