我有两个主要活动,其余页面是全屏DialogFragments
(而不是另一个Activity
),
在某些时候,我打开了另一个DialogFragment
的{{1}}。第一个DialogFragment
如何知道按下后退按钮或上面的DialogFragment
是否被解除?
我没有将DialogFragment
添加到backstack,因为我不希望他们替换活动中的某些视图。
我试图覆盖DialogFragment
和onResume()
。我尝试向onHidden()
添加一个事件,但没有一个产生任何相关结果。
如果有人能说明我能做到这一点,我会很高兴吗?
我的目标是在上面的对话框被解除之后刷新FragmentManager
或DialogFragment
(来自服务器的新数据或我在对话框中做出的影响上一页的更改)。 / p>
答案 0 :(得分:0)
您有几个选择。最直接的方法是使用界面。
public class TopFragment {
private OnDismissListener mListener;
public void setOnDismissedListener(OnDismissListener listener) {
mListener = listener;
}
private void dismiss() {
mListener.onDismissed();
}
public interface OnDismissListener {
void onDismissed();
}
}
public class BottomFragment implements TopFragment.OnDismissListener {
@Override
public void onDismissed() {
//reload views
}
private void createTopFragment() {
TopFragment fragment = new TopFragment();
fragment.setOnDismissedListener(this);
}
}
但是,如果您只是担心您的数据在屏幕之间同步,您还可以使用类似数据库ContentObserver,BroadcastReceiver或某种事件总线的内容来监听数据中的更改并相应地更新您的视图。其中一个可能是一个更好的模式,因为它解耦了你的两个片段,而如果你使用一个监听器,这两个是高度耦合的。