我正在使用BackHandler函数在Android的本机Back按钮事件期间关闭我的应用程序。我希望此函数关闭应用程序只有在特定页面上才能工作。我该怎么做?
我的代码:
componentWillUnmount() {
BackHandler.removeEventListener('hardwareBackPress', this.backPress);
}
componentDidMount() {
BackHandler.addEventListener('hardwareBackPress', this.backPress);
}
backPress = () => {
Alert.alert(
'Exit app',
'Exit app?',
[
{ text: 'No', onPress: () => console.log('Cancel Pressed'), style: 'cancel' },
{ text: 'Yes', onPress: () => BackHandler.exitApp() },
],
{ cancelable: false })
return true;
}
答案 0 :(得分:0)
您可以实现一个标志,并在生成每个页面时相应地更新它,以指示是否必须显示该对话框。然后像这样编辑你的backPress函数:
var app = {
backButtonDialog: true
};
backPress = () => {
if(app.backButtonDialog){
// Prompt for exit
Alert.alert(
'Exit app',
'Exit app?',
[
{ text: 'No', onPress: () => console.log('Cancel Pressed'), style: 'cancel' },
{ text: 'Yes', onPress: () => BackHandler.exitApp() },
],
{ cancelable: false })
return true;
}else{
// Do nothing
return false;
}
}
然后,当您希望对话框显示时,您可以简单地设置app.backButtonDialog = true;
;当您希望后退按钮不执行任何操作时,可以设置app.backButtonDialog = false;
。