我有一些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);
有什么建议吗?谢谢!
答案 0 :(得分:1)
OnDBfilled flid static
private static OnDBfilled onFilledListener;
或
片段& viewpager使用:
viewpager.setoffscreenpagelimit(9)