2016-12-07 7 views
1

現在、アンドロイドハードウェアのバックキーを押すと、反応ルータのフラックスがActions.pop()メソッドを呼び出します。とにかく、前のシーンに戻るのを防ぐ方法を呼び出すのを防ぐために、他のシーンにジャンプしたいからです。例えば、シーンAからシーンB、シーンBにプレスシーンCでバックキーは、私はシーンAに行きたいシーンC、と私はBackAndroid docsによるとネイティブルータフラックスに反応する:アンドロイドハードウェアのバックキーを無効にする

componentWillMount() { 
    // Disable back button by just returning true instead of Action.pop() 
    BackAndroid.addEventListener('hardwareBackPress',() => { 
     return true; 
    }); 
    }; 
+0

シーンCから戻るボタンを押しながらシーンBを「ルート」から削除しようとします。 – Prasanna

答えて

0

を試してみました:

検出ハードウェア戻るボタンが押され、リスナーがない場合、またはリスナーのいずれもがtrueを返さない場合は、プログラムを終了してデフォルトの戻るボタン機能を呼び出すことができます。イベントサブスクリプションは逆順(最後に登録されたサブスクリプション)で呼び出され、1つのサブスクリプションがtrueを返した場合、以前に登録されたサブスクリプションは呼び出されません。

したがって、特定のシーンでは、BackAndroidリスナーを追加して、このリスナーで必要なものを実行してtrueを返します。

もう1つ注目すべきことは、componentWillMountにイベントリスナーを追加することです。
ルーターがこのコンポーネントの子孫である場合、これは、ルーターがマウントされる前にバックイベントに登録して、ルーターの後に登録されるため、リスナーの前に呼び出されることを意味します。
代わりにComponentDidMountでイベントに登録してみてください。このメソッドは、ルータがマウントされ、リスナが登録された後に呼び出されます。

関連する問題