我怎么知道按下后退后 DialogFragment 何时再次显示?
How can I know when a DialogFragment is shown again after back pressed?
我有两个主要活动,其余页面是全屏 DialogFragments
(而不是另一个 Activity
),
在某个时候,我从另一个 DialogFragment
打开一个 DialogFragment
。第一个 DialogFragment
如何知道是否按下了后退按钮或上面的 DialogFragment
何时被关闭?
我没有将 DialogFragment
添加到后台堆栈,因为我不想让它们替换 activity 中的某些视图。
我试图覆盖 onResume()
和 onHidden()
。我尝试向 FragmentManager
添加事件,但 none 产生了任何相关结果。
如果有人能阐明我如何做到这一点,我会很高兴?
我的目标是在上面的对话框关闭后刷新 DialogFragment
或 Activity
(来自服务器的新数据或我在影响前一页的对话框中所做的更改) .
你有几个选择。最直接的方法是只使用一个接口。
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 或某种事件总线之类的东西来监听数据的变化并更新您的相应的意见。其中之一可能是更好的模式,因为它解耦了您的两个片段,而如果您使用侦听器,则两者是高度耦合的。
我有两个主要活动,其余页面是全屏 DialogFragments
(而不是另一个 Activity
),
在某个时候,我从另一个 DialogFragment
打开一个 DialogFragment
。第一个 DialogFragment
如何知道是否按下了后退按钮或上面的 DialogFragment
何时被关闭?
我没有将 DialogFragment
添加到后台堆栈,因为我不想让它们替换 activity 中的某些视图。
我试图覆盖 onResume()
和 onHidden()
。我尝试向 FragmentManager
添加事件,但 none 产生了任何相关结果。
如果有人能阐明我如何做到这一点,我会很高兴?
我的目标是在上面的对话框关闭后刷新 DialogFragment
或 Activity
(来自服务器的新数据或我在影响前一页的对话框中所做的更改) .
你有几个选择。最直接的方法是只使用一个接口。
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 或某种事件总线之类的东西来监听数据的变化并更新您的相应的意见。其中之一可能是更好的模式,因为它解耦了您的两个片段,而如果您使用侦听器,则两者是高度耦合的。