2017-05-29 91 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? –