2017-09-22 18 views
1

Androidで戻るボタンを押したときに戻ろうとしています。BackHandlerが正常に動作しませんネイティブに反応します

リスナーを画面に追加しました。リモートデバッグモードのときにイベントを受信して​​います。しかし、リモートでデバッグをしないと正しく動作しません。本当に変だ。

私が書いたコードスニペットを添付します。

//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

しかし、実際には、私のアプリケーションは本当に変です。デバッグモード(Debug Remote)で実行すると、StackNavigatorのBack Actionで正常に動作しますが、通常のモードでは動作していないため、BackHandler関数にイベントを送信せずに終了します。 –

関連する問題