I'm making slidable menu and hamburger icon/sliding not working. I'm also not sure if this working how i think: when we are setting FragmentContainerView like this
<androidx.fragment.app.FragmentContainerView
app:navGraph="@navigation/nav_graph"
We are refer to Fragment set in navigation manager, am I right?
Code:
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
val binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
if (savedInstanceState == null) {
supportFragmentManager.beginTransaction()
.replace(R.id.container, EggTimerFragment.newInstance())
.commitNow()
}
val navHostFragment =
supportFragmentManager.findFragmentById(R.id.nav_graph) as NavHostFragment
val navController = navHostFragment.navController
findViewById<NavigationView>(R.id.nav_view)
.setupWithNavController(navController)
val appBarConfiguration = AppBarConfiguration(navController.graph, binding.drawerLayout)
NavigationUI.setupActionBarWithNavController(this, navController, binding.drawerLayout)
NavigationUI.setupWithNavController(binding.navView, navController)
binding.navView.setNavigationItemSelectedListener {
when(it.itemId){
R.id.item1 -> Toast.makeText(applicationContext, "item1 clicked", Toast.LENGTH_SHORT).show()
}
true
}
super.onCreate(savedInstanceState)
}
override fun onOptionsItemSelected(item: MenuItem): Boolean {
if(toggle.onOptionsItemSelected(item)){
return true
}
return onOptionsItemSelected(item)
}
XML main_activity file:
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<androidx.drawerlayout.widget.DrawerLayout
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/drawerLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".app.MainActivity">
<androidx.fragment.app.FragmentContainerView
app:navGraph="@navigation/nav_host_fragment"
android:name="androidx.navigation.fragment.NavHostFragment"
android:id="@+id/myNavHostFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:defaultNavHost="true"
/>
<com.google.android.material.navigation.NavigationView
android:id="@+id/nav_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
app:headerLayout="@layout/nav_header"
app:menu="@menu/nav_header_menu"
android:layout_gravity="start"
android:fitsSystemWindows="true"/>
</androidx.drawerlayout.widget.DrawerLayout>
</layout>
Maybe I should cut some code and move it to fragment? Android guide is too briefly and unclear for me.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…