gpt4 book ai didi

android - 非法状态异常 : Link does not have a NavController set

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:40:46 29 4
gpt4 key购买 nike

我正在使用 Android 导航组件进行导航。我有一个 LoginFragment,它有一个按钮可以转换到 SignUpFragment。单击按钮时出现此错误。

java.lang.IllegalStateException: View android.support.v7.widget.AppCompatButton{49d9bd1 VFED..C.. ...P.... 201,917-782,1061 #7f090172 app:id/signUpLink} does not have a NavController set

这是我的 nav_graph.xml

<navigation xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
app:startDestination="@id/loginFragment">
<fragment
android:id="@+id/loginFragment"
android:name="org.fossasia.openevent.app.core.auth.login.LoginFragment"
android:label="login_fragment"
tools:layout="@layout/login_fragment">
<action
android:id="@+id/action_loginFragment_to_signUpFragment"
app:destination="@id/signUpFragment" />

</fragment>
</navigation>

这是用于导航的 LoginFragment 中的代码 -

binding.signUpLink.setOnClickListener(Navigation.createNavigateOnClickListener(R.id.action_loginFragment_to_signUpFragment, null));

这是 NavHostFragment Activity 布局文件的摘录 -

<FrameLayout
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
android:name="android.navigation.fragment.NavHostFragment"
app:navGraph="@navigation/main_navigation"
app:defaultNavHost="true"/>

最佳答案

官方推荐方案

目前使用FragmentContainerView不是很友好,必须从supportFragmentManager中访问:

val navHostFragment = supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as NavHostFragment
val navController = navHostFragment.navController

在我的 xml 中,我的 FragmentContainerView 看起来像这样:

<androidx.fragment.app.FragmentContainerView
android:id="@+id/nav_host_fragment"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="0dp"
android:layout_height="0dp"
app:defaultNavHost="true"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="parent"
app:navGraph="@navigation/nav_graph"
/>

这已通过 androidx 导航版本 2.3.0 测试

我删除了旧答案,因为 Google 开发人员已澄清它不再是推荐的解决方案。感谢@JuSTLearnedit,发表评论让我更新这个问题。

关于android - 非法状态异常 : Link does not have a NavController set,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50502269/

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