【问题标题】:How to determine back button press如何确定后退按钮按下
【发布时间】:2019-08-28 19:44:59
【问题描述】:

我正在使用 android 导航组件库。我用导航图设置了两个片段。我想在我的片段内按下后退按钮时执行一些额外的操作。

override fun onOptionsItemSelected(item: MenuItem): Boolean {
    return NavigationUI.onNavDestinationSelected(item, view!!.findNavController())
           || super.onOptionsItemSelected(item)
}

我使用此代码来处理工具栏向上按钮单击,但我也想处理返回按钮按下。我该怎么做?

【问题讨论】:

标签: android android-navigation android-architecture-navigation


【解决方案1】:

这是另一个 onBackPessed 覆盖

back press

【讨论】:

  • 它在片段中不起作用,你需要一些技巧来处理它。
  • 添加了答案链接
【解决方案2】:

例子:

public class MyFragment extends Fragment {

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // This callback will only be called when MyFragment is at least Started.
        OnBackPressedCallback callback = new OnBackPressedCallback(true /* enabled by default */) {
            @Override
            public boolean handleOnBackPressed() {
                // Handle the back button event
            }
        });
        requireActivity().getOnBackPressedDispatcher().addCallback(this, callback);

        // The callback can be enabled or disabled here or in handleOnBackPressed()
    }
    ...
}

更多解释见android官方指南:Provide custom back navigation

【讨论】:

    猜你喜欢
    • 2017-06-11
    • 2011-01-22
    • 1970-01-01
    • 2021-04-16
    • 1970-01-01
    • 1970-01-01
    • 2016-10-04
    • 2018-09-30
    • 1970-01-01
    相关资源
    最近更新 更多