我想阻止用户返回上一个屏幕。所以我添加了代码,但这不起作用。这有什么解决方案吗?可以看到警报弹出窗口,但“返回false”不起作用。
componentDidMount() {
BackAndroid.addEventListener('hardwareBackPress', () => {
Alert.alert("alert","alert")
this.props.navigator.pop();
return false;
});
答案 0 :(得分:71)
如果要禁用默认的后退按钮行为,则需要返回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 (
<View>
<Text>Back button example</Text>
</View>
);
}
}
module.exports = BackButtonDemo;
注意:强>
同时从解决方案中删除this.props.navigator.pop();
。
Navigator
弹出式功能会将用户带到Navigator
呈现的上一个屏幕。
答案 1 :(得分:12)
Shiny 使用react hooks的新实现:
"detail": "You do not have permission to perform this action."
答案 2 :(得分:11)
我通过在App.js
中添加此代码来禁用整个应用程序的后退按钮(android)componentDidMount() {
BackAndroid.addEventListener('hardwareBackPress', this.handleBackButton);
}
componentWillUnmount() {
BackAndroid.removeEventListener('hardwareBackPress', this.handleBackButton);
}
handleBackButton() {
return true;
}
不要忘记导入BackAndroid
import {BackAndroid} from 'react-native'
答案 3 :(得分:5)
只需返回true
即可尝试此禁用后退按钮import {BackAndroid} from 'react-native';
componentWillMount() {
BackAndroid.addEventListener('hardwareBackPress', () => {return true});
}
答案 4 :(得分:4)
如果您正在使用反应 - 讨论,那么您需要使用BackHandler
代替BackAndroid
import { BackHandler } from 'react-native';
// code
componentDidMount() {
BackHandler.addEventListener('backPress');
}
// some more code
componentWillUnmount() {
BackHandler.removeEventListener('backPress');
}
答案 5 :(得分:4)
使用 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;
}
答案 6 :(得分:1)
点击硬件后退按钮OnBackPressed回调被调用
你可以在onBackPressed回调中删除超级声明。
@Override
public void onBackPressed() {
}
答案 7 :(得分:0)
使用react native的BackHandler为我工作。只需在您的ComponentWillMount中添加以下行即可:
BackHandler.addEventListener('hardwareBackPress',function(){return true}) 它将在Android设备上禁用后退按钮。
答案 8 :(得分:0)
禁用后退按钮以进行模块反应导航,使用钩子useFocusEffect
const hardwareBackPressCustom = useCallback(() => {
return true;
}, []);
useFocusEffect(() => {
BackHandler.addEventListener('hardwareBackPress', hardwareBackPressCustom)
return () => {
BackHandler.removeEventListener('hardwareBackPress', hardwareBackPressCustom)
};
}, []);