【发布时间】:2020-07-31 14:07:33
【问题描述】:
我有一个带有一个菜单按钮和两个按钮的活动。我有三个片段 Frag_A、Frag_B 和 Frag_C。默认情况下,我使用片段 Frag_A 加载活动。基于点击activity中不同的按钮,我在fragment之间进行切换。
对于访问活动按钮的片段,我创建了一个接口 BasicClickListener 并让活动实现了该接口。
public interface BasicClickListeners {
void onMenuClick();
void goToFragment2();
void goToFragment3();
}
我在所有片段中都实现了两种方法:
public synchronized void registerBasicListener(BasicClickListeners listener) {
basicClickListeners = listener;
}
private synchronized void unregisterBasicListener() {
basicClickListeners = null;
}
所以,每当我通过活动启动片段时,我都会从活动中调用 registerBasicListener() 方法。在所有片段的 onDestroy() 上,我调用 unregisterBasicListener。
@Override
public void onDestroy() {
super.onDestroy();
unregisterBasicListener();
}
现在,如果我想从片段 1 转到片段 2,我使用来自片段 2 的 basiClickListeners.goToFragment2(),它可以工作。
我不知道为什么有时我会在 basicClickListeners 上获得 NPE。即使片段处于活动状态,basicClickListeners 怎么会变为 null?而且它并不总是发生。只有某些时候。我无法确定它发生的原因。请帮助我解决这个问题。
【问题讨论】:
标签: java android android-fragments