gpt4 book ai didi

Android导航 - 弹出返回堆栈时删除操作栏后退按钮

转载 作者:行者123 更新时间:2023-12-02 13:17:50 25 4
gpt4 key购买 nike

我正在尝试做的

我正在使用 Android Navigation 组件来处理我的应用程序中的导航。在这个例子中,我有两个屏幕,屏幕 A 和屏幕 B。
我希望用户能够单击屏幕 A 中的按钮并能够导航到屏幕 B;然后被阻止返回上一个屏幕(屏幕 A)。

问题

当用户从屏幕 A 导航到屏幕 B 时,操作栏上的后退按钮仍然允许用户返回上一个屏幕,但是当单击底部栏中的后退按钮时,它会退出应用程序,因此这部分工作正常.

我需要做什么才能删除操作栏中的后退按钮?

enter image description here

到目前为止我读到的

我已遵循这三篇文章中的指导,但我认为他们可能忽略了 ActionBar的后退按钮:

  • Stackoverflow - How to clear navigation Stack after navigating toanother fragment in Android
  • Android Developer Guide - Conditional navigation
  • Android Developer Guide - Navigate to a destination

  • 我的代码

    导航图 - nav_graph.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/screen_a">
    <fragment
    android:id="@+id/screen_a"
    android:name="com.example.conditionalnavigation.AFragment"
    android:label="screen A">
    <action
    android:id="@+id/action_AFragment_to_BFragment"
    app:destination="@id/screen_b"
    app:launchSingleTop="true"
    app:popUpTo="@id/screen_a"
    app:popUpToInclusive="true" />
    </fragment>
    <fragment
    android:id="@+id/screen_b"
    android:name="com.example.conditionalnavigation.BFragment"
    android:label="screen B" />
    </navigation>

    MainActivity - 这充当我的单一 Activity 导航主机。
    class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    DataBindingUtil.setContentView<ActivityMainBinding>(this, R.layout.activity_main)
    val navController = this.findNavController(R.id.myNavHostFragment)

    NavigationUI.setupActionBarWithNavController(this, navController)
    }

    override fun onSupportNavigateUp(): Boolean {
    val navController = this.findNavController(R.id.myNavHostFragment)
    return navController.navigateUp()
    }
    }

    最佳答案

    在您的 Activity 类中添加以下成员(在 Kotlin 中):

    private lateinit var appBarConfiguration: AppBarConfiguration

    在 onCreate 方法中添加以下行:
    ....
    val drawerLayout: DrawerLayout = findViewById(R.id.drawer_layout)
    ...
    ...
    appBarConfiguration = AppBarConfiguration(
    setOf([**ID of the fragment layout you want without back button**],
    ), drawerLayout
    )

    setupActionBarWithNavController(navController, appBarConfiguration)
    navView.setupWithNavController(navController)

    ....

    这样,您的 fragment 将成为根 fragment ,并且移除了后退按钮。希望能帮助到你。

    关于Android导航 - 弹出返回堆栈时删除操作栏后退按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61733812/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com