【问题标题】:Reuse fragment structure and passing complex arguments重用片段结构并传递复杂的参数
【发布时间】:2012-10-15 10:19:42
【问题描述】:

我已经实现了一个 DialogFragment 类,它显示一个对话框并在按下它的按钮时调用一个自定义侦听器。

由于我想在许多项目中重用这个类,我需要在创建片段时传递监听器。但是我不知道我该怎么做。

我知道我不应该在构造函数中传递侦听器,因为如果必须重新创建片段,Android 可以调用默认构造函数,并且我无法通过 Bundle 参数传递侦听器,因为 Bundle 不支持它。

我找到的唯一解决方案是让活动实现自定义侦听器并在 onAttach 方法中检查它。问题是这种方式会将实现类限制为所有者活动,并且可能不适合应用程序。

你找到更好的解决方案了吗?

谢谢!

【问题讨论】:

    标签: android android-fragments listener bundle android-alertdialog


    【解决方案1】:

    您通常有一个静态的newInstance() 方法来创建您的片段并传递您的片段可能需要的任何值。这就是将监听器传递给的方法。

    看看这里newInstance() 方法也被用作示例: http://developer.android.com/reference/android/app/Fragment.html

    【讨论】:

    • 我认为问题是如何在 android 重新创建片段时恢复所有侦听器。
    • 不这么认为。该问题明确提到构造函数不可用。但也许我错了。让我们等待 Uizev 的 cmets。
    • 你们俩都是对的。构造函数不可用,我需要在 android 重新创建片段时恢复侦听器。基本问题是我需要将自定义对象传递给片段,而我知道的机制还不够。
    • 这个答案对我无效。我需要确保在重新创建时正确传递了侦听器。我不在乎它是由 Android 自动完成还是由我手动完成。
    • 我同意,这不是您问题的解决方案。我猜你的 onAttach 方法是最好的解决方案。您也可以让活动在其 onAttachFragment 方法中将任意侦听器传递给您的片段,但这对我来说太脆弱了。
    猜你喜欢
    • 1970-01-01
    • 2020-09-28
    • 1970-01-01
    • 2014-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-27
    • 1970-01-01
    相关资源
    最近更新 更多