У меня есть фрагмент, который включает в себя просмотрщик, который включает в себя множество фрагментов.Я называю методы фрагментов, которые находятся в viewpager из внешнего фрагмента.Я могу сделать это без каких-либо проблем, но я сталкиваюсь с проблемой, когда я перехожу к другому фрагменту из фрагментов, которые находятся в viewpager, а затем возвращаюсь, я не могу использовать этот метод, потому что вызывающий метод объект рассматривается как нулевой.
Фазы проблемы в порядке
структура макета
1- Во внешнем фрагменте метод одного из фрагментов видового экрана вызывается без каких-либо проблем.
2- Щелкните по любому элементу в представлении рециркулятора во фрагментах, которые установлены в окне просмотра.
3 - Он направляет пользователя к другому фрагменту.
4 - Вернитесь через popbackstackimmediate ().
5- Первая фаза вызывает проблему с исключением нулевого указателя.
Этот метод реализован во внешнем фрагменте.
private void setPagination() {
nestedScrollView.setOnScrollChangeListener(new NestedScrollView.OnScrollChangeListener() {
@Override
public void onScrollChange(NestedScrollView v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) {
if (v.getChildAt(v.getChildCount() - 1) != null) {
if ((scrollY >= (v.getChildAt(v.getChildCount() - 1).getMeasuredHeight() - v.getMeasuredHeight())) &&
scrollY > oldScrollY) {
if (currentPage.equalsIgnoreCase("A"))
AFragment.loadMore();
else if (currentPage.equalsIgnoreCase("B"))
BFragment.loadMore();
else if (currentPage.equalsIgnoreCase("C"))
CFragment.loadMore();
else if (currentPage.equalsIgnoreCase("D"))
DFragment.loadMore();
}
}
}
});
}
Метод LoadMore ()
public void loadMore() {
if (list_a.size() % 4 == 0) {
ManagerAll.getInstance().fetchA(id_number, page).enqueue(new Callback<List<A>>() {
@Override
public void onResponse(Call<List<A>> call, Response<List<A>> response) {
if (response.isSuccessful()) {
int before_update = list_a.size();
list_a.addAll(response.body());
int after_update = list_a.size();
adapter.notifyItemRangeInserted(before_update, after_update);
page++;
}
}
@Override
public void onFailure(Call<List<A>> call, Throwable t) {
}
});
}
}
Я не могу получить доступ к list_a здесь, потому что он генерирует исключение нулевого указателя.Я предполагаю, что это еще не инициализировано после того, как я возвращаюсь от другого фрагмента.