2017-09-22 129 views
1

我想回去时,用户在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”

+0

究竟是什么错误? – Raymond

+0

我认为这是BackHandler问题。当我在“远程调试模式”中进行测试时,后退按钮可以正常工作。但是当我测试它不是在“远程调试模式”时,它会完全关闭应用程序。 –

回答

1

其实我已经用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函数。 –