【问题标题】:Android Navigation Component - Implementing ListenerAndroid 导航组件 - 实现监听器
【发布时间】:2021-01-03 22:17:54
【问题描述】:

所以我正在使用导航组件,而我现在正在尝试做的事情是实现一个侦听器,用于当用户单击对话框中的按钮时。在另一个片段中,我想检测这种情况何时发生。

过去,我只是在对话框中创建一个界面,然后在按钮的 onClick 中调用该界面的函数。然后在片段中,我将通过为对话框设置一个变量并调用 set 函数来设置侦听器,并在片段中实现接口函数。比如:

dialogFrag.setListener(this)

但是对于导航组件,我不知道该怎么做,因为我一直在处理如下导航:

findNavController().navigate(R.id.dialogName)

知道怎么做吗?

【问题讨论】:

标签: android kotlin android-architecture-navigation


【解决方案1】:

如上所述here 我将复制他的解决方案

Android 导航架构组件

例如:

假设您使用 navController 从 Fragment A 打开 Fragment B。

并且您想要从片段 B 到片段 A 的一些数据。

class B :BottomSheetDialogFragment() {

override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        val root = inflater.inflate(R.layout.your_layout, container, false)

        root.sampleButton.setOnClickListener {
            val navController = findNavController()
            navController.previousBackStackEntry?.savedStateHandle?.set("your_key", "your_value")
            dismiss()

        }
}

在您的片段 A 中:

findNavController().currentBackStackEntry?.savedStateHandle?.getLiveData<String>("your_key")
                ?.observe(viewLifecycleOwner) {
    
                    if (it == "your_value") {
                        //your code
    
                    }
    
                }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-18
    • 2013-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多