首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用NavController打开DialogFragment片段

使用NavController打开DialogFragment片段
EN

Stack Overflow用户
提问于 2018-12-07 16:33:28
回答 2查看 2.4K关注 0票数 0

我有一台DialogFragment。NavController库不支持DialogFragment,它只支持全屏片段。

我正在使用DialogFragmentshow(fragmentManager,""),它工作得很好,但在DialogFragment中我无法获得“导航”实例。(可能是因为它不是以NavController开头的)

代码语言:javascript
运行
复制
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
    super.onCreateDialog(savedInstanceState)
    dialogView = LayoutInflater.from(context).inflate(R.layout.fragment_dialog, null)
    viewModel = BaseViewModel.create(this)


    return AlertDialog.Builder(context)
            .setView(dialogView)
            .create()
}

我试过了(在onCreateDialog,onActivityCreated中)

代码语言:javascript
运行
复制
Navigation.findNavController(view)
Navigation.findNavController(customView)
Navigation.findNavController(activity, R.id.thisFragmentId)

有没有使用NavController加载新片段的选项?如果不是,有没有其他的解决方案?我喜欢它,因为我可以在DialogFragment中使用ViewModel

EN

回答 2

Stack Overflow用户

发布于 2019-10-11 08:04:08

以下是一些更新:

NavController库2.0及更高版本支持DialogFragment目标。

例如:

代码语言:javascript
运行
复制
<dialog
        android:id="@+id/dialogFragmentScreen"
        android:name="com.x.y.DialogFragmentScreen"
        android:label="fragment_dialog"
        tools:layout="@layout/fragment_dialog" >
    <action
            android:id="@+id/action_dialogFragmentScreen_to_mainFragment"
            app:destination="@id/mainFragment"
            app:popUpTo="@id/mainFragment" />
</dialog>

访问NavController:

findNavController(parentFragment!!.view!!)

示例:

findNavController(parentFragment!!.view!!).navigate(R.id.action_dialogFragmentScreen_to_mainFragment)

票数 4
EN

Stack Overflow用户

发布于 2018-12-07 16:51:10

我找到了答案。但我在寻找一个更好的解决方案。

代码语言:javascript
运行
复制
val args = DirectionFragmentArgs.Builder()
       .setId(id)
       .build()
       .toBundle()

(activity as SingleActivity).navigation.navigate(R.id.directionFragmentId, args)
dismiss()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53665861

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档