使用弹出消息覆盖后退按钮

Override back button with popup message

我正在使用导航组件在我的片段之间导航。我有 1 个片段,用户可以在其中编辑一些数据。一旦发生任何变化,我就会设置标志 "saved = false",并且在用户按下 "save" 按钮后,标志会变为 "saved = true"。现在,我想做的是在用户按下后退按钮但未保存更改时添加一条常规弹出消息(您要保存更改吗?是否取消)。我也想将它添加到两个按钮:

这个

还有这个

我调查了这个:https://developer.android.com/guide/navigation/navigation-custom-back 它仅适用于(主)后退按钮,但不适用于工具栏上的按钮。当我需要转到代码中的上一个片段时,我使用:

findNavController().popBackStack()

那么我是否需要以某种方式覆盖此函数或添加回调?或者也许有一些完全不同(更好)的方法来做到这一点?

下次请分享您的代码

我遇到了同样的问题,这是我的解决方案,您需要覆盖 activity/fragment 中的 onOptionsItemSelected 并检查何时按下 "back" 箭头。

代码

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case android.R.id.home: 
        // put here what you would like to happen when u click on it
        return true;
    default:
        return super.onOptionsItemSelected(item);
    }
}

编辑:我只是注意到您正在使用 Kotlin,所以我添加了一个 kotlin 示例:

override fun onOptionsItemSelected(item: MenuItem): Boolean {
when (item.getItemId()){
    android.R.id.home -> {
        // put your code here
        return true
    }
}
return super.onOptionsItemSelected(item)

}

有什么问题尽管问:)