gpt4 book ai didi

android - 导航架构组件 - 带有 lambda 表达式的 Action 导航

转载 作者:IT老高 更新时间:2023-10-28 13:34:44 26 4
gpt4 key购买 nike

我添加了一个新 Action Navigation.xml:

 <fragment
android:id="@+id/launcher_home"
android:name="com.example.android.codelabs.navigation.MainFragment"
android:label="@string/home"
tools:layout="@layout/main_fragment">
<action
android:id="@+id/go_to_step_one"
app:destination="@id/flow_step_one" />
</fragment>

调用导航操作时,如果我使用,导航正常工作:

 view.findViewById<Button>(R.id.navigate_action_bt)?.setOnClickListener(
Navigation.createNavigateOnClickListener(R.id.go_to_step_one, null)
)

但是当用 lambda 调用它时,它不起作用:

 view.findViewById<Button>(R.id.navigate_action_bt)?.setOnClickListener {
Navigation.createNavigateOnClickListener(R.id.go_to_step_one, null)
}

最佳答案

嗯,这是正确的工作方式。方法 Navigation.createNavigateOnClickListener() returns一个 View.OnClickListener 并根据 docs分配它的正确方法是使用,即使在 Kotlin 中:

button.setOnClickListener(Navigation.createNavigateOnClickListener(R.id.next_fragment, null));

如果您在 lambda 中使用该方法,则 lambda 本身就是点击监听器,因此您在点击监听器中返回了一个点击监听器,这就是它不起作用的原因。就像这样做:

button.setOnClickListener {
View.OnClickListener {
Toast.makeText(this, "hi", Toast.LENGTH_LONG).show()
}
}

你可能感兴趣的是:

 view.findViewById<Button>(R.id.navigate_action_bt)?.setOnClickListener { view ->
view.findNavController().navigate(R.id.go_to_step_one)
}

这将在按钮单击时执行导航转换。

关于android - 导航架构组件 - 带有 lambda 表达式的 Action 导航,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50328941/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com