【问题标题】:Calling previous activity method on dialog dismiss在对话框关闭时调用先前的活动方法
【发布时间】:2013-09-19 12:33:21
【问题描述】:

点击类MainActivity中的某个按钮时,会显示一些片段FragDialog的对话框:

FragDialog cf = new FragDialog().newInstace();

cf.show(getSupportFragmentManager(), "dialog");

当按下硬件后退按钮或关注活动MainActivity 时,对话框被关闭,我返回到活动MainActivity

在对话框关闭后不会调用活动MainActivity 的方法onResume()onAttach()

这个想法是在对话框关闭后刷新活动MainActivity,以便根据对话框片段FragDialog中选择的字段获取更改后的视图。

如文档DialogFragment中所述,

// DialogFragment.show() will take care of adding the fragment
// in a transaction.  We also want to remove any currently showing
// dialog, so make our own transaction and take care of that here.

但添加 remove() 似乎毫无意义,因为它不会被调用,即使没有它,对话框也会消失。

我想知道如果这会被调用,那么我可以再次启动活动MainActivity 以反映更改。

【问题讨论】:

    标签: android android-activity refresh android-dialog


    【解决方案1】:

    当您调用对话框时,您不会失去活动控制,它不会进入非活动状态。当您的对话框关闭时,您只需要创建一个活动事件,如果您通过按钮取消它很容易。然后您只需定期更改您的视图。

    这是一篇关于对话框的好文章 http://developer.android.com/guide/topics/ui/dialogs.html

    【讨论】:

    • 当我的对话框关闭时,我可以为活动创建一个事件,但我不知道它在哪里关闭以触发活动。我没有打电话给remove() 来关闭它,但它正在关闭。如果我使用remove(),它不起作用。
    • 这很简单)只需为您的片段覆盖 onDestroy() 或 onPause(),确保它将事件发送到您的活动
    • 我没想过调用片段的onDestroy()。相反,我不断尝试活动的方法来被调用。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-02
    • 1970-01-01
    • 1970-01-01
    • 2014-04-13
    相关资源
    最近更新 更多