Ibr*_*Ali 10 android android-architecture-components android-architecture-navigation
我正在尝试动态设置工具栏标题,我不知道是否可能。
假设我有我单击的每个项目的项目列表,它是打开的新片段,因此我尝试动态更改每个项目的工具栏标题。
我试过 :
it.findNavController().navigate(direction)
it.findNavController().currentDestination!!.label = someTitle
Run Code Online (Sandbox Code Playgroud)
但它不起作用。
有一些相关的主题,即:
但这并不能有效地解决我的问题,这是一种解决方法。
ian*_*ake 22
从Navigation 1.0.0-alpha08或更高版本开始,Navigation 支持标签中的参数:
目的地标签,当与 NavigationUI 方法一起使用时,现在会自动用正确的参数替换
{argName}你的实例b/80267266android:label
因此,您可以将标签设置为android:label="{dynamicTitle}",然后将参数传递给您的navigate调用。当您使用 Safe Args 时,您需要向目的地添加一个参数:
<fragment
android:id="@+id/myFragment"
android:name=".MyFragment"
android:label="{dynamicTitle}">
<argument
android:name="dynamicTitle"
app:argType="string"/>
</fragment>
Run Code Online (Sandbox Code Playgroud)
然后在构建路线时传入您的动态标题:
val directions = YourDirections.actionToMyFragment(someTitle)
it.findNavController().navigate(directions)
Run Code Online (Sandbox Code Playgroud)
当然,你可以自己监听导航事件,用你自己OnDestinationChangedListener的来做你想做的任何事情,包括将标签设置为你想要的任何内容。不需要使用 NavigationUI,并且在调用 NavigationUI 方法后添加的任何侦听器都将覆盖它设置的任何内容。
| 归档时间: |
|
| 查看次数: |
5901 次 |
| 最近记录: |