无法实例化片段 androidx.navigation.fragment.NavHostFragment

Raj*_*dka 2 android android-architecture-components android-jetpack android-architecture-navigation

错误

无法实例化片段 androidx.navigation.fragment.NavHostFragment:确保类名存在,是公共的,并且有一个公共的空构造函数。

活动布局

 <fragment
        android:id="@+id/my_nav_host_fragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:name="androidx.navigation.fragment.NavHostFragment"
        app:defaultNavHost="true"
        app:navGraph="@navigation/app_nav" />
Run Code Online (Sandbox Code Playgroud)

活动

class HomeActivity : AppCompatActivity(), NavigationView.OnNavigationItemSelectedListener {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_home)
    }
}
Run Code Online (Sandbox Code Playgroud)

分段

class MovieListFragment : Fragment() {
    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
                              savedInstanceState: Bundle?): View? {
        return inflater.inflate(R.layout.fragment_movie_list, container, false)
    }
}
Run Code Online (Sandbox Code Playgroud)

使用的依赖:

implementation('android.arch.navigation:navigation-fragment-ktx:1.0.0-alpha07') {
    exclude group: "com.android.support"
}
implementation('android.arch.navigation:navigation-ui-ktx:1.0.0-alpha07') {
    exclude group: "com.android.support"
}
Run Code Online (Sandbox Code Playgroud)

san*_*oli 12

如果它只发生在 proguarded 版本上,你可能忘记添加 proguard 规则。在您的 proguard 文件中添加以下规则

-keepnames class androidx.navigation.fragment.NavHostFragment
Run Code Online (Sandbox Code Playgroud)


小智 0

尝试用这个

dependencies {
    def nav_version = "2.1.0-alpha01"
    implementation "androidx.navigation:navigation-fragment:$nav_version" // For Kotlin use navigation-fragment-ktx
    implementation "androidx.navigation:navigation-ui:$nav_version" // For Kotlin use navigation-ui-ktx
}
Run Code Online (Sandbox Code Playgroud)