【问题标题】:How can I show a DialogFragment using compatibility package?如何使用兼容性包显示 DialogFragment?
【发布时间】:2011-07-19 12:16:35
【问题描述】:

我尝试在 3.0- 设备上使用 DialogFragment,它不支持 SDK 级别的 Fragment 或 DialogFragment。

所以,我决定使用支持 Fragment 的 Android 兼容库。
然后我创建了一个扩展 android.support.v4.app.DialogFragment 的 DialogFragment 类。

但是.....当我尝试使用 DialogFragment.show() 显示我的 DialogFragment 时,我通知 show(FragmentManager, String) 接受第一个参数作为 android.app.FragmentManager,而不是android.support.v4.app.FragmentManager

我认为 android.app.FragmentManager 不能在 Android 3.0- 设备中使用,因为它不包含在 SDK 中。

有什么方法可以显示带有兼容性库的 DialogFragment?我是否必须使用另一种方式来显示带有兼容性库的 My DialogFragment?

任何帮助将不胜感激。 :)

【问题讨论】:

    标签: android compatibility android-fragments fragment


    【解决方案1】:

    兼容性包适用于在 3.0 之前的 Android 版本上开发的用户。

    FragmentManagerDialogFragment 类都存在于 API 级别 11 (3.0) 中

    在任何 Fragment 或 Activity 中,您应该能够执行以下操作以在屏幕中间显示一个小(空)对话框:

    DialogFragment df = new DialogFragment();
    df.show(getSupportFragmentManager(), "MyDF");
    

    【讨论】:

    • 用 getSupportFragmentManager() 替换 getFragmentManager。
    【解决方案2】:

    FragmentManagerDialogFragment 存在于 sdk 版本 4 及更高版本的兼容库中,请确保导入这些。

    用户 getSupportFragmentManager() 获取您的 FragmentManager 以获取兼容库。

    显示对话框,如 DialogFragment 文档中所述,传递 `FragmentManager' 的兼容库版本。

    请注意,您也可以将DialogFragment 视为Fragment 并使用add(...)replace(...) 作为交易的一部分“显示”它,即您不仅限于使用show(...)

    【讨论】:

    • add() 和 show() 有什么区别?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-21
    • 2022-11-20
    • 1970-01-01
    相关资源
    最近更新 更多