У меня есть BottomNavigationView
с отображением Fragments
, в моем первом фрагменте я использую залп для выборки данных JSON и заполнения их в RecyclerView
, как показано ниже:
private void loadRecyclerViewData() {
StringRequest stringRequest = new StringRequest(Request.Method.GET,
URL_DATA,
new Response.Listener<String>() {
@Override
public void onResponse(String s) {
bar.setVisibility(View.GONE);
try {
JSONArray array = new JSONArray(s);
for (int i = 0; i < array.length(); i++) {
JSONObject o = array.getJSONObject(i);
ListItem item = new ListItem(
o.getString("name"),
o.getString("bio"),
o.getString("imageurl")
);
listItems.add(item);
}
adapter = new MyAdapter(listItems, getContext());
rv.setAdapter(adapter);
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
bar.setVisibility(View.GONE);
Toast.makeText(getContext(), volleyError.getMessage(), Toast.LENGTH_LONG).show();
}
});
RequestQueue requestQueue = Volley.newRequestQueue(getContext());
requestQueue.add(stringRequest);
}
Вышеуказанное вызывается в моих фрагментах onCreateView
.
Он отображается так, как я хочу, но вот в чем проблема. Когда я перехожу к другому фрагменту и возвращаюсь (используя BottomNavigationView
), тогда снова вызывается onCreateView
и данные снова загружаются.
Хорошим примером этого является приложение YouTube и Instagram, где данные не перезагружаются каждый раз при переключении между представлениями.
Мой вопрос:
Как я могу перемещаться между фрагментами, используя BottomNavigationView
, не вызывая onDestroyView
, или есть другой способ избежать проблемы, с которой я сталкиваюсь?
Здесь - похожий вопрос.
РЕДАКТИРОВАТЬ 1: добавление контекста к вопросу
При выборе элемента внутри BottomNavigationView
он раздувает / заменяет фрагмент, вызывая onCreateView
для вызова. Мой метод вызывается в onCreateView
, это означает, что каждый раз, когда я «переключаюсь» между фрагментами, мой метод вызывается снова, и Волей снова получает данные.