为React Native防止硬件后退按钮android

我想阻止用户返回上一个屏幕。 所以我添加了代码,但这不起作用。 这有什么解决方案吗? 可以看到警报popup,但“返回false”不起作用。

componentDidMount() { BackAndroid.addEventListener('hardwareBackPress', () => { Alert.alert("alert","alert") this.props.navigator.pop(); return false; }); 

  • React Native:显示键盘后更新应用程序布局
  • 在React Native应用程序中调试WebView
  • 如何在Android上的react-native应用程序中获取versionName?
  • 位置请求在React-Native的Android模拟器上超时
  • Android Studio 3中反应生成的资源问题
  • RTL在RTL设备中被强制使用
  • 检索项目的父项时出错:未find与给定名称匹配的资源“android:TextAppearance.Material.Widget.Button.Colored”
  • 在React Native中加载Android图像
  • 如果要禁用默认的后退按钮行为,则需要返回true

    这是一个示例组件,它将阻止用户返回上一屏幕。

     import React, {Component,} from 'react'; import { View, Text, BackHandler, ToastAndroid, } from 'react-native'; class BackButtonDemo extends Component { componentDidMount() { BackHandler.addEventListener('hardwareBackPress', this.handleBackButton); } componentWillUnmount() { BackHandler.removeEventListener('hardwareBackPress', this.handleBackButton); } handleBackButton() { ToastAndroid.show('Back button is pressed', ToastAndroid.SHORT); return true; } render() { return (  Back button example  ); } } module.exports = BackButtonDemo; 

    注意:同时删除’this.props.navigator.pop();’ 从你的解决方案 导航器popupfunction将使用户进入导航器渲染的上一个屏幕。

    我通过在App.js中添加此代码来禁用整个应用程序的后退按钮(android)

     componentDidMount() { BackAndroid.addEventListener('hardwareBackPress', this.handleBackButton); } componentWillUnmount() { BackAndroid.removeEventListener('hardwareBackPress', this.handleBackButton); } handleBackButton() { return true; } 

    别忘了导入BackAndroid

     import {BackAndroid} from 'react-native' 

    如果你使用的是反应,而不是使用BackHandler而不是BackAndroid

     import { BackHandler } from 'react-native'; // code componentDidMount() { BackHandler.addEventListener('backPress'); } // some more code componentWillUnmount() { BackHandler.removeEventListener('backPress'); } 

    尝试通过返回true来禁用后退按钮

     import {BackAndroid} from 'react-native'; componentWillMount() { BackAndroid.addEventListener('hardwareBackPress', () => {return true}); } 

    只是在使用react-navigation时给你一个完整的答案:

    如果您正在使用react-navigation,请将以下内容放在RootNavigation类而不是App.js中,以便禁用整个应用程序的后退按钮。

     import { BackHandler } from 'react-native'; componentDidMount() { BackHandler.addEventListener('hardwareBackPress', this.onBackButtonPressed); } componentWillUnmount() { BackHandler.removeEventListener('hardwareBackPress', this.onBackButtonPressed); } onBackButtonPressed() { return true; } 

    Onclick硬件后退按钮OnBackPressed回调被调用

    你可以在onBackPressed回调中删除超级声明。

      @Override public void onBackPressed() { }