我有一个片段,其中包括一个包含许多片段的viewpager。我从外部片段中调用在viewpager中的片段方法。我可以毫无问题地做到这一点,但是我遇到了一个问题,当我从viewpager中的片段中转到另一个片段然后返回时,我无法使用该方法,因为方法调用对象被视为null。
问题阶段按顺序
1-在外部片段中,没有任何问题地调用了viewpager片段之一的方法。
2-在回收站视图中的任意项目上单击在viewpager中沉降的片段。
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,因为它引发了空指针异常。我想从另一个片段回来后它还没有初始化。