gradle project
id 'androidx.navigation.safeargs' version '2.5.0' apply false
gradle app
plugins {
..
id 'androidx.navigation.safeargs.kotlin'
}
//navigation
implementation 'androidx.fragment:fragment:1.3.6'
implementation 'androidx.navigation:navigation-fragment-ktx:2.5.3'
implementation 'androidx.navigation:navigation-ui-ktx:2.5.3'
新建文件夹 navigation 一定要新建文件,不要复制粘贴(还要注意文件类型) nav_home
<?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"
android:id="@+id/nav_home"
app:startDestination="@id/homeFragment">
<fragment
android:id="@+id/homeFragment"
android:name="com.example.myapplication.fragment.homeFragment"
android:label="homeFragment" >
<action
android:id="@+id/action_homeFragment_to_setingFragment"
app:destination="@id/setingFragment" />
</fragment>
<fragment
android:id="@+id/setingFragment"
android:name="com.example.myapplication.fragment.setingFragment"
android:label="setingFragment" >
</fragment>
</navigation>
main
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
//下面代码的 意思是:当切换对应的Fragment时,动态修改ActionBar标题文字,
//目的为了让运行效果明显
val navController = Navigation.findNavController(this, R.id.fragment)
NavigationUI.setupActionBarWithNavController(this, navController)
}
override fun onSupportNavigateUp(): Boolean {
val navController = Navigation.findNavController(this, R.id.fragment)
return navController.navigateUp()
}
}
fragmnt
class homeFragment: Fragment() {
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
return inflater.inflate(R.layout.fragment_home, container, false)
}
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
var button: TextView? = view?.findViewById(R.id.tv_home)
button?.setOnClickListener {
val navController = Navigation.findNavController(it)
navController.navigate(R.id.action_homeFragment_to_setingFragment)
}
}
}