2017-05-29 37 views
0

我正在处理原生Android和面向硬件后退按钮的问题我的反应原生版本是0.44.2,我在后面使用BackHandler是我后退按钮的代码:React原生硬件后退按钮不起作用

BackHandler.addEventListener("hardwareBackPress",() => { 
    if (this.navigator && this.navigator.getCurrentRoutes().length > 1){this.navigator.pop() 
return true // do not exit app 
} else { 
return false // exit app 
}}) 

我得到了以下错误:

Error_for_back_button

+0

根据你的图片,我认为'this.navigator'是未定义的。请检查一下。 –

回答

1

使用BackAndroid
您需要的功能结合在构造函数或“这个”将是不确定的

import{ BackAndroid } from 'react-native'; 

constructor(props){ 
    super(props) 
    this._handleBackPress = this._handleBackPress.bind(this); 
} 

    componentDidMount(){ 
      BackAndroid.addEventListener('hardwareBackPress',this._handleBackPress); 
     } 

     componentWillUnmount(){ 
     // to remove the back listener 
     BackAndroid.removeEventListener('hardwareBackPress', this._handleBackPress); 
     } 

    _handleBackPress(){ 
    //write logic here 
    } 
+2

'BackAndroid'已弃用。您应该使用'BackHandler'。 – sooper

0

您需要使用本地做出反应的BackAndroid API。

BackAndroid.addEventListener('hardwareBackPress',() => { 

    var flag = false; 

    if(_route.name==="newbooking"){ 
     Alert.alert(
      "Confirmation", 
      "Are you sure you want to cancel?", 
      [ 
       {text: 'No', onPress:() => console.log('OK Pressed!')}, 
       {text: 'Yes', onPress:() => {_navigator.pop();}} 
      ] 
     ); 
     return true; 
    } 
    else{ 
     flag = true; 
    } 
    if (_navigator.getCurrentRoutes().length === 1 ) { 
     return false; 
    } 
    if(flag){ 

     _navigator.pop(); 
     return true; 
    } 

}); 
0

您可以使用React-Navigation,它自动处理硬件背压。 如果您使用它进行导航。

+0

我目前使用React-Navigation,当我按下应用程序关闭。 –

+0

@MichaelMalura是你使用TabNavigator还是StackNavigator? –