2017-09-22 128 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函數。 –