如何禁用在android片段类中按下的后退按钮

新手上路,请多包涵

我想禁用片段类中的后退按钮。 onBackPressed() 在此片段中似乎不起作用。我怎样才能禁用后退按钮?

这是我的示例代码:

 public class Login extends Fragment {
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
       ,Bundle savedInstanceState) {
        ViewGroup root = (ViewGroup) inflater.inflate(R.layout.login, null);
        return root;
    }

    public void onBackPressed() {
    }
}

原文由 JellyBean 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 689
2 个回答

您必须重写父 FragmentActivity 类的 onBackPressed 。因此,将您的代码放在父 FragmentActivity 中。或者您可以使用以下方法调用父方法:

 public void callParentMethod(){
    getActivity().onBackPressed();
}

在 FragmentActivity 中覆盖 onBackPressed 方法并且不调用其超类来禁用后退按钮。

 @Override
public void onBackPressed() {
  //super.onBackPressed();
  //create a dialog to ask yes no question whether or not the user wants to exit
  ...
}

原文由 Gunhan 发布,翻译遵循 CC BY-SA 3.0 许可协议

这是您管理 onBackPressed() 片段的新方法以及新的活动回调:

     // Disable onBack click
    requireActivity().onBackPressedDispatcher.addCallback(this) {
      // With blank your fragment BackPressed will be disabled.
    }

这是 android 文档链接: https ://developer.android.com/reference/androidx/activity/OnBackPressedDispatcher

原文由 pRaNaY 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题