Android NPE同时第二个调用界面

时间:2016-07-05 11:40:29

标签: android android-fragments interface

我有一些application class课程Application。我将它用作填充数据库和执行REST调用的控制器。有一个界面:

private OnDBfilled onFilledListener;
...
public void setOnFilledListener(OnDBfilled onFilledListener) {
    this.onFilledListener = onFilledListener;
}
public interface OnDBfilled {
    void onFilledCallback();
}
...

当我需要数据调用它以便知道Fragment时,该数据已成功从Internet加载并填充到数据库中:

@Override
        public void onResponse(Call call, Response response) throws IOException {
...//working with data
onFilledListener.onFilledCallback();
}

第一次,当调用完成并且数据库已填满时,我可以在日志中看到结果:

private Application controller;
private Application.OnDBfilled listener;
...
controller = new Application();
listener = new Application.OnDBfilled() {
        @Override
        public void onFilledCallback() {
            System.out.println("bd is filled. replacing fragments initiated editianal");
            replaceFragment();
        }
    };
 controller.setOnFilledListener(listener);

这很好用,我可以看到日志消息。但是当我在另一个片段中尝试做的时候,我在这行中有Null Pointer Exception

 onFilledListener.onFilledCallback();

这是另一个片段的代码,但它几乎相同:

  private Application controller;
private Application.OnDBfilled filledDBListener;

...
//onCreateView
controller = new Application();
    filledDBListener = new Application.OnDBfilled() {
        @Override
        public void onFilledCallback() {
            swipeRefreshLayout.setRefreshing(false);
           // fillEventListFromBD(UserData.getCity(getActivity()));
        }
    };
    controller.setOnFilledListener(filledDBListener);

有什么建议吗?谢谢!

1 个答案:

答案 0 :(得分:1)

OnDBfilled flid static

 private static OnDBfilled onFilledListener; 

片段& viewpager使用:

 viewpager.setoffscreenpagelimit(9)