您好,我正在研究导航体系结构组件,我正在为我的活动编程设置NavHostFragment。
主活动.xml
:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.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:id="@+id/nav_host"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:defaultNavHost="true"
/>
</android.support.constraint.ConstraintLayout>
维护活动
:
package com.andor.navigate.demonavigation
import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import androidx.navigation.Navigation
import androidx.navigation.fragment.NavHostFragment
import androidx.navigation.ui.NavigationUI
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
setupNavigation()
NavigationUI.setupActionBarWithNavController(this, NavHostFragment.findNavController(nav_host))
}
override fun onSupportNavigateUp(): Boolean = Navigation.findNavController(
this,
R.id.nav_host
).navigateUp()
private fun setupNavigation() {
val navHostFragment = nav_host as NavHostFragment
val navController = navHostFragment.navController
val navInflater = navController.navInflater
val graph = navInflater.inflate(R.navigation.nav_graph)
graph.addDefaultArguments(intent!!.extras!!) // This is where you pass the bundle data from Activity to StartDestination
navHostFragment.navController.graph = graph
}
}
问题
:
我使用上面的代码很长时间了,但是我更新了我的gradle依赖版本
android.arch.navigation:navigation
从
1.0.0-alpha08
到
1.0.0-alpha09
在下面的代码行中更新之后,我得到编译时错误:
代码:
graph.addDefaultArguments(intent!!.extras!!) // This is where you pass the bundle data from Activity to StartDestination
错误:
未解析的引用:addDefaultArguments
依赖项(项目等级文件)
:
dependencies {
def nav_version = "1.0.0-alpha09"
implementation "android.arch.navigation:navigation-fragment:$nav_version" // use -ktx for Kotlin
implementation "android.arch.navigation:navigation-ui:$nav_version" // use -ktx for Kotlin}
}
当我回到导航版本时
1.0.0-字母08
一切正常很好。为了谷歌删除addDefaultArguments的原因
NavDestination
在alpha09版本中。
有人知道为什么addDefaultArguments方法被删除了吗?
更新:
从活动将arg传递到StartDestination的解决方法是什么?
检查
thread
关于这个问题的更多细节,基本上我想找到一种方法,将参数从我的导航片段宿主活动发送到我的startDestination。
以前
1.0.0-字母09
:
只有
Solution
我能找到正在使用
addDefaultArguments()
之后
1.0.0-字母09
不知道???
如果有任何解决这个问题的办法,请分享!