我正在使用Android Studio中的导航编辑器来实现Safe Args
。
我接受一个片段中的论点
<fragment
android:id="@+id/gameWonFragment"
android:name="com.example.android.navigation.GameWonFragment"
android:label="@string/android_trivia"
tools:layout="@layout/fragment_game_won">
<action
android:id="@+id/action_gameWonFragment_to_gameFragment"
app:destination="@id/gameFragment"
app:popUpTo="@+id/titleFragment">
</action>
<argument
android:name="numQuestions"
app:argType="integer"
android:defaultValue="0" />
<argument
android:name="numCorrect"
app:argType="integer"
android:defaultValue="0" />
</fragment>
在我的片断中,我将参数作为
view.findNavController().navigate(GameFragmentDirections.actionGameFragmentToGameWonFragment(numQuestions, questionIndex))
但是,GameFragmentDirections.actionGameFragmentToGameWonFragment()
不想接受参数,我尝试了Clean Project
和Rebuild Project
。
这是投掷:
Too many arguments for @NonNull public open fun actionGameFragmentToGameWonFragment(): GameFragmentDirections.ActionGameFragmentToGameWonFragment defined in com.example.android.navigation.GameFragmentDirections
6条答案
按热度按时间q5iwbnjs1#
通过删除
android:defaultValue
标记修复了此问题。所以-
然后在进行更改后使用
Rebuild Project
。mefy6pfw2#
这个问题在类似的帖子中得到了回答-https://stackoverflow.com/a/60807951/11615237
基本上,您可能需要使用Kotlin版本的插件,如
apply plugin: "androidx.navigation.safeargs.kotlin"
。pengsaosao3#
我也遇到过这个问题,我能够保留
android:defaultValue
参数标记,并通过获取适当的action对象的示例,设置必要的值,然后将其发送到navigate命令来清除“太多参数”错误。例如,这个:
而不是这个
nnt7mjpx4#
"公共函数View. findNavController()的参数太多:在androidx. navigation中定义的导航控制器"
我遇到了同样的错误。
确定的答案没有解决我的问题。
我的解决方案
文件-〉使缓存无效/重新启动
注意
注意,正确的参数被传递给正确的片段。
样品
请注意,正确的片段正在运行。
谢谢。
f4t66c6m5#
我也遇到过同样的问题,我通过在action标签中添加参数来解决它。
hgb9j2n66#
我也遇到过同样的问题。我使用的是多栈导航。每个标签页都有自己的图表。在一个图表中缺少所需的目的地,这是导致问题的原因。我通过复制目的地解决了这个问题