反向处理程序无法正常工作反应本机
问题描述:
我想回去时,用户在Android上按下按钮。反向处理程序无法正常工作反应本机
我已经在屏幕上添加了监听器,并且在远程调试模式下它正在接收事件。但是当我不远程调试时,它不能正常工作。这真的很奇怪。
我要附上我写的代码片段。
//Navigator
const BoardNavigator = StackNavigator({
Board: { screen: Board }
});
//Board Component
class Board extends Component {
componentWillMount() {
BackHandler.addEventListener('hardwareBackPress', this._onBackPressed);
}
componentWillUnmount() {
BackHandler.removeEventListener('hardwareBackPress', this._onBackPressed);
}
_onBackPressed() {
console.log('backPress');
goBack(this.props.navigation);
return true;
}
onNext() {
this.props.navigation.navigate("Board", {content: ...});
}
}
附加信息: 这BoardNavigator是rootNavigator(StackNavigator)的嵌套之一。
反应:'16 .0.0-alpha.12'
反应母语: “0.47.2”
答
其实我已经用backhandler像下面用于控制后退按钮以关闭应用程序只是2立即按。
componentDidMount() {
this._backPress = 0;
BackHandler.addEventListener('backPress',() => {
setTimeout(() => {
this._backPress = 0;
}, 3000);
this._backPress += 1;
if (this._backPress <= 1) {
ToastAndroid.showWithGravity(strings.BACK_BUTTON_ALERT, ToastAndroid.SHORT, ToastAndroid.CENTER);
return true;
}
return false;
});
+0
但实际上,我的应用程序真的很奇怪。当我以调试模式(调试远程)运行它时,它与StackNavigator Back Action很好地协作,但是在正常模式下,它不工作,它关闭应用程序而不发送事件给BackHandler函数。 –
究竟是什么错误? – Raymond
我认为这是BackHandler问题。当我在“远程调试模式”中进行测试时,后退按钮可以正常工作。但是当我测试它不是在“远程调试模式”时,它会完全关闭应用程序。 –