代码之家  ›  专栏  ›  技术社区  ›  Rene Ferrari

NavHostFragment未解析(AndroidX)

  •  4
  • Rene Ferrari  · 技术社区  · 8 年前

    出于某种原因,我总是会遇到以下错误:

         Caused by: android.app.Fragment$InstantiationException: Unable to instantiate fragment androidx.navigation.fragment.NavHostFragment: make sure class name exists, is public, and has an empty constructor that is public
    

    我在跟踪 Guide on Android Developers 然而,上面的错误发生在启动应用程序之后。

    导航图。xml

    <?xml version="1.0" encoding="utf-8"?>
    <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/mainFragment">
    
    <fragment
        android:id="@+id/mainFragment"
        android:name="projects.ferrari.rene.sken.ui.main.MainFragment"
        android:label="main_fragment"
        tools:layout="@layout/main_fragment" >
        <action
            android:id="@+id/action_mainFragment_to_takeImageFragment"
            app:destination="@id/takeImageFragment" />
    </fragment>
    <fragment
        android:id="@+id/takeImageFragment"
        android:name="projects.ferrari.rene.sken.ui.takeimage.TakeImageFragment"
        android:label="take_image_fragment"
        tools:layout="@layout/take_image_fragment" />
    

    主要活动。xml

    <?xml version="1.0" encoding="utf-8"?>
    <androidx.constraintlayout.widget.ConstraintLayout
        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:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity">
    
        <fragment
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/my_nav_host_fragment"
            android:name="androidx.navigation.fragment.NavHostFragment"
            app:navGraph="@navigation/nav_graph"
            app:defaultNavHost="true"
            />
    
    </androidx.constraintlayout.widget.ConstraintLayout>
    

    主要活动。kt

        package projects.ferrari.rene.sken
    
    import androidx.appcompat.app.AppCompatActivity
    import android.os.Bundle
    import androidx.navigation.findNavController
    
    class MainActivity : AppCompatActivity() {
    
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.main_activity)
        }
    
        override fun onSupportNavigateUp()
                = findNavController(R.id.my_nav_host_fragment).navigateUp()
    }
    

    建筑gradle(应用程序)

    apply plugin: 'com.android.application'
    
    apply plugin: 'kotlin-android'
    
    apply plugin: 'kotlin-android-extensions'
    
    android {
        compileSdkVersion 'android-P'
        defaultConfig {
            applicationId "projects.ferrari.rene.sken"
            minSdkVersion 21
            targetSdkVersion 28
            versionCode 1
            versionName "1.0"
            testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        }
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
        }
    }
    
    dependencies {
        def anko_version = "0.10.5"
        def nav_version = "1.0.0-alpha01"
    
        implementation "android.arch.navigation:navigation-fragment-ktx:$nav_version"
        implementation "android.arch.navigation:navigation-ui-ktx:$nav_version"
        implementation "org.jetbrains.anko:anko-commons:$anko_version"
        implementation 'com.google.android.material:material:1.0.0-alpha1'
        implementation 'com.google.android.gms:play-services-vision:15.0.2'
        implementation 'androidx.core:core-ktx:1.0.0-alpha1'
        implementation 'com.github.pqpo:SmartCropper:v1.1.3@aar'
        implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
        implementation 'androidx.appcompat:appcompat:1.0.0-alpha1'
        implementation 'androidx.constraintlayout:constraintlayout:1.1.0'
        implementation 'androidx.lifecycle:lifecycle-extensions:2.0.0-alpha1'
        implementation 'androidx.legacy:legacy-support-v4:1.0.0-alpha1'
        testImplementation 'junit:junit:4.12'
        androidTestImplementation 'androidx.test:runner:1.1.0-alpha2'
        androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0-alpha2'
    }
    

    基本上我用的是 Kotlin , AndroidX 我真的不知道问题出在哪里。

    编辑 导入可能有问题。对于导航,我不使用 安卓利德 在里面 Build your first App with Jetpack 他们使用 implementation 'androidx.navigation:navigation-fragment:' + rootProject.navigationVersion 但我不知道他们使用的是哪个版本,所以我阅读了 Architecture Component Release Notes 上面写的是AndroidX '2.0.0-alpha1' 应该使用。不幸的是,这个问题无法解决。

    0 回复  |  直到 8 年前