8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

Android 导航图从堆栈中删除了过多的后退按钮

Christoph Ostertag 1月前

21 0

我开始使用导航组件库并创建了一个图表来在不同片段之间导航。我的基本设置是一个带有两个片段(A 和 B)的 BottomNavigationView。片段 B 可以...

我开始使用导航组件库并创建了一个图表以在不同片段之间导航。我的基本设置是带有两个片段(A 和 B)的 BottomNavigationView。片段 B 可以深入到图表内部的片段 C,而片段 C 可以深入到片段 D。此时一切都正常,后台堆栈从 D -> C -> B。

我的问题是 Fragment Z,它可以通过活动上定义的工具栏菜单访问,并由每个 Fragment 使用。我想要的是从 A -> B -> C -> D -> Z 的路径,然后按后退按钮,我想返回到 Fragment D。但我转到了图表的开头,即 Fragment A。

Fragment Z 不使用任何操作。导航组件检测到导航图和 menu.xml 中的 fragment.id 相同,并为我进行导航。因此无法为我定义一些多返回堆栈魔法。

导航.xml

<?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_graph"
app:startDestination="@id/fragmentA">

<fragment android:id="@+id/fragmentA" />

<fragment android:id="@+id/fragmentZ" />

<fragment
    android:id="@+id/fragmentB">

    <action
        android:id="@+id/action_b_to_c"
        app:destination="@id/fragmentC" />
</fragment>

<fragment
    android:id="@+id/fragmentC">

    <action
        android:id="@+id/action_c_to_d"
        app:destination="@id/fragmentD" />
</fragment>
</navigation>

工具栏菜单.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto">
<item
    android:id="@+id/fragmentZ"
    android:title="Go to Z"
    app:showAsAction="always" />
</menu>

底部导航.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group android:checkableBehavior="single">
    <item
        android:id="@+id/fragmentA"
        android:title="Go to A" />
    <item
        android:id="@+id/fragmentB"
        android:title="Go to B" />
</group>
</menu>

主要活动

class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView( R.layout.activity_main )
    val toolbar: MaterialToolbar = findViewById(R.id.toolbar)
    setSupportActionBar(toolbar)
    val navHostFragment = supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as NavHostFragment
    val navController = navHostFragment.navController
    val navView: BottomNavigationView = findViewById( R.id.bottomNavigation )
    navView.setupWithNavController( navController )
}

override fun onCreateOptionsMenu(menu: Menu?): Boolean {
    menuInflater.inflate(R.menu.menu_toolbar, menu)
    return super.onCreateOptionsMenu(menu)
}

override fun onOptionsItemSelected(item: MenuItem): Boolean {
    val navController = findNavController(R.id.nav_host_fragment)
    return item.onNavDestinationSelected(navController) || super.onOptionsItemSelected(item)
}

}

帖子版权声明 1、本帖标题:Android 导航图从堆栈中删除了过多的后退按钮
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Christoph Ostertag在本站《android》版块原创发布, 转载请注明出处!
最新回复 (0)
返回
作者最近主题: