如何知道何时准备好片段视图

时间:2018-10-26 20:59:05

标签: java android android-fragments

我有一个片段,其中包括一个包含许多片段的viewpager。我从外部片段中调用在viewpager中的片段方法。我可以毫无问题地做到这一点,但是我遇到了一个问题,当我从viewpager中的片段中转到另一个片段然后返回时,我无法使用该方法,因为方法调用对象被视为null。

问题阶段按顺序

more detailed config

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,因为它引发了空指针异常。我想从另一个片段回来后它还没有初始化。

0 个答案:

没有答案