更改权限会出现错误:在调用getGraph()之前必须调用setGraph()

我在相机应用程序中工作,如果我改变我的权限手动设置,回到活动再次给我这个错误/崩溃。

在调用getGraph()之前,必须调用setGraph()。

我使用活动/片段导航库。

导航图:

<?xml version="1.0" encoding="utf-8"?>
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/guard_nav_graph"
    app:startDestination="@id/cameraFragment">
    <fragment
        android:id="@+id/cameraFragment"
        android:name="guard.camera.CameraFragment"
        android:label="Camera"
        tools:layout="@layout/fragment_guard_camera">
        <action
            android:id="@+id/action_cameraFragment_to_LocationFragment"
            app:destination="@id/LocationFragment"
            app:popEnterAnim="@anim/enter_from_left"
            app:popExitAnim="@anim/exit_to_right">
            <argument
                android:name="isLocationAllowed"
                app:argType="boolean" />
        </action>
        <argument
            android:name="isEdit"
            android:defaultValue="false"
            app:argType="boolean" />
    </fragment>
</navigation>

Gradle库版本:

implementation 'androidx.navigation:navigation-fragment-ktx:2.1.0'
implementation 'androidx.navigation:navigation-ui-ktx:2.1.0'

GuardActivity:

class GuardActivity : ActivityBase() {
    private lateinit var binding: ActivityGuardBinding
    private val navController: NavController by lazy {
        findNavController(R.id.nav_host_fragment)
    }
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setTheme(R.style.AppTheme_NoActionBar)
        binding = DataBindingUtil.setContentView(this, R.layout.guard)
        setSupportActionBar(binding.incToolbar.toolBar)
        NavigationUI.setupWithNavController(binding.incToolbar.toolBar, navController)
    }
    override fun onSupportNavigateUp(): Boolean {
        return navController.navigateUp() || super.onSupportNavigateUp()
    }
}

XML文件的活动:

<androidx.constraintlayout.widget.ConstraintLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".v2.guard.GuardActivity">
    <include
        android:id="@+id/inc_toolbar"
        layout="@layout/fl_toolbar" />
    <fragment
        android:id="@+id/nav_host_fragment"
        android:name="androidx.navigation.fragment.NavHostFragment"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        app:defaultNavHost="true"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/inc_toolbar"
        app:navGraph="@navigation/guard_nav_graph" />
</androidx.constraintlayout.widget.ConstraintLayout>

###你应该使用最新版本的导航组件。他们在2。3。0中修复了一个相关的问题。

https://developer。android。com/guide/navigation/navigation-getting-started

阅读全文

▼ 版权说明

相关文章也很精彩
推荐内容
更多标签
相关热门
全站排行
随便看看

错说 cuoshuo.com —— 程序员的报错记录

部分内容根据CC版权协议转载;网站内容仅供参考,生产环境使用务必查阅官方文档

辽ICP备19011660号-5

×

扫码关注公众号:职场神器
发送: 1
获取永久解锁本站全部文章的验证码