如何在后退后再次显示DialogFragment时知道什么时候?

时间:2016-04-06 08:26:37

标签: android back dialogfragment

我有两个主要活动,其余页面是全屏DialogFragments(而不是另一个Activity), 在某些时候,我打开了另一个DialogFragment的{​​{1}}。第一个DialogFragment如何知道按下后退按钮或上面的DialogFragment是否被解除?

我没有将DialogFragment添加到backstack,因为我不希望他们替换活动中的某些视图。

我试图覆盖DialogFragmentonResume()。我尝试向onHidden()添加一个事件,但没有一个产生任何相关结果。

如果有人能说明我能做到这一点,我会很高兴吗?

我的目标是在上面的对话框被解除之后刷新FragmentManagerDialogFragment(来自服务器的新数据或我在对话框中做出的影响上一页的更改)。 / p>

1 个答案:

答案 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或某种事件总线的内容来监听数据中的更改并相应地更新您的视图。其中一个可能是一个更好的模式,因为它解耦了你的两个片段,而如果你使用一个监听器,这两个是高度耦合的。