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

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

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

如果要禁用默认的后退按钮行为,则需要返回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() { }