android - 当显示带有导航组件的对话框时,有没有办法留在当前片段?
问题描述
我使用带有导航组件的底部导航活动来显示一个对话框。但是当对话框出现时,活动切换到主页片段。当对话框显示时,有没有办法留在当前片段? 屏幕记录
我尝试了两个版本的导航组件:
- 2.3.5
- 2.4.0-alpha10
导航图:
<?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"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/mobile_navigation"
app:startDestination="@+id/navigation_a">
<fragment
android:id="@+id/navigation_a"
android:name="com.example.myapplication.ui.AFragment"
android:label="@string/title_fragment_a"
tools:layout="@layout/fragment_a" />
<fragment
android:id="@+id/navigation_b"
android:name="com.example.myapplication.ui.BFragment"
android:label="@string/title_fragment_b"
tools:layout="@layout/fragment_b" />
<fragment
android:id="@+id/navigation_c"
android:name="com.example.myapplication.ui.CFragment"
android:label="@string/title_fragment_c"
tools:layout="@layout/fragment_c" />
<dialog
android:id="@+id/navigation_d"
android:name="com.example.myapplication.ui.DDialog"
android:label="DDialog"
tools:layout="@layout/dialog_d" />
</navigation>
主要活动 :
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
val navView: BottomNavigationView = binding.navView
val navController = findNavController(R.id.nav_host_fragment_activity_main)
// Passing each menu ID as a set of Ids because each
// menu should be considered as top level destinations.
val appBarConfiguration = AppBarConfiguration(
setOf(R.id.navigation_a, R.id.navigation_b, R.id.navigation_c)
// setOf(R.id.navigation_a, R.id.navigation_b, R.id.navigation_c, R.id.navigation_d)
)
setupActionBarWithNavController(navController, appBarConfiguration)
navView.setupWithNavController(navController)
}
底部栏菜单
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/navigation_a"
android:icon="@drawable/ic_baseline_filter_1_24"
android:title="@string/title_fragment_a" />
<item
android:id="@+id/navigation_b"
android:icon="@drawable/ic_baseline_filter_2_24"
android:title="@string/title_fragment_b" />
<item
android:id="@+id/navigation_c"
android:icon="@drawable/ic_baseline_filter_3_24"
android:title="@string/title_fragment_c" />
<item
android:id="@+id/navigation_d"
android:icon="@drawable/ic_baseline_crop_square_24"
android:title="@string/title_dialog" />
</menu>