如何在 Android (react-native) 上禁用设备后退按钮?
How do I disable the device back button on Android (react-native)?
如何使用 React-Native 在 Android 上禁用物理设备后退按钮?我不想为用户启用它。
在 activity 中,您可以覆盖 onBackPressed()
并注释对 super class.
的调用
@Override
public void onBackPressed() {
// super.onBackPressed(); comment this line to disable back button press
}
截至今天,v2 上没有 React Native Navigation 的开箱即用支持。但是,您可以使用 React native 本身的 BackHandler
。处理它并 return false 禁用它。
上的文档
例子
BackHandler.addEventListener('hardwareBackPress', function() {
return false;
});
在 app.js 中,使用启动应用程序时创建的侦听器跟踪当前打开的屏幕。 App主组件创建一个BackHandler监听器,根据当前打开的屏幕响应设备返回按钮。
主要成分:
componentDidMount() {
BackHandler.addEventListener('hardwareBackPress', this.onBackPress);
}
componentWillUnmount() {
BackHandler.removeEventListener('hardwareBackPress', this.onBackPress);
}
onBackPress = () => {
if (this.props.currentScreen.name === 'app.main') {
Alert.alert(
'Confirm exit',
'Do you want to exit App?',
[
{text: 'CANCEL', style: 'cancel'},
{text: 'OK', onPress: () => {
BackHandler.exitApp()
}
}
]
);
} else {
Navigation.pop(this.props.currentScreen.id);
}
return true;
}
App.js
//register to compomentDidApperaListener to keep track on which screen is currently open. The componentName and Id are stored in my redux store
Navigation.events().registerComponentDidAppearListener(({ componentId, componentName }) => {
store.dispatch(updateCurrentScreen({'name': componentName, 'id': componentId}))
})
如何使用 React-Native 在 Android 上禁用物理设备后退按钮?我不想为用户启用它。
在 activity 中,您可以覆盖 onBackPressed()
并注释对 super class.
@Override
public void onBackPressed() {
// super.onBackPressed(); comment this line to disable back button press
}
截至今天,v2 上没有 React Native Navigation 的开箱即用支持。但是,您可以使用 React native 本身的 BackHandler
。处理它并 return false 禁用它。
例子
BackHandler.addEventListener('hardwareBackPress', function() {
return false;
});
在 app.js 中,使用启动应用程序时创建的侦听器跟踪当前打开的屏幕。 App主组件创建一个BackHandler监听器,根据当前打开的屏幕响应设备返回按钮。
主要成分:
componentDidMount() {
BackHandler.addEventListener('hardwareBackPress', this.onBackPress);
}
componentWillUnmount() {
BackHandler.removeEventListener('hardwareBackPress', this.onBackPress);
}
onBackPress = () => {
if (this.props.currentScreen.name === 'app.main') {
Alert.alert(
'Confirm exit',
'Do you want to exit App?',
[
{text: 'CANCEL', style: 'cancel'},
{text: 'OK', onPress: () => {
BackHandler.exitApp()
}
}
]
);
} else {
Navigation.pop(this.props.currentScreen.id);
}
return true;
}
App.js
//register to compomentDidApperaListener to keep track on which screen is currently open. The componentName and Id are stored in my redux store
Navigation.events().registerComponentDidAppearListener(({ componentId, componentName }) => {
store.dispatch(updateCurrentScreen({'name': componentName, 'id': componentId}))
})