react-native                
            Android  - ハードウェア戻るボタン
        
        
            
    サーチ…
Androidでハードウェアのバックボタンを押す
BackAndroid.addEventListener('hardwareBackPress', function() {
    if (!this.onMainScreen()) {
        this.goBack();
        return true;
    }
    return false;
});
 注: this.onMainScreen()およびthis.goBack()は組み込み関数ではありませんが、それらも実装する必要があります。 ( https://github.com/immidi/react-native/commit/ed7e0fb31d842c63e8b8dc77ce795fac86e0f712) 
BackAndroidとNavigatorの例
 React NativeのBackAndroidとNavigatorの使い方の例です。 
 componentWillMountは、戻るボタンのタップを処理するイベントリスナーを登録します。ヒストリスタック内に別のビューがあるかどうかをチェックし、存在する場合は元の状態に戻り、それ以外の場合はデフォルトの動作を維持します。 
 BackAndroidドキュメントとNavigatorドキュメントの詳細
import React, { Component } from 'react'; // eslint-disable-line no-unused-vars
import {
  BackAndroid,
  Navigator,
} from 'react-native';
import SceneContainer from './Navigation/SceneContainer';
import RouteMapper from './Navigation/RouteMapper';
export default class AppContainer extends Component {
  constructor(props) {
    super(props);
    this.navigator;
  }
  componentWillMount() {
    BackAndroid.addEventListener('hardwareBackPress', () => {
      if (this.navigator && this.navigator.getCurrentRoutes().length > 1) {
        this.navigator.pop();
        return true;
      }
      return false;
    });
  }
  renderScene(route, navigator) {
    this.navigator = navigator;
    return (
      <SceneContainer
        title={route.title}
        route={route}
        navigator={navigator}
        onBack={() => {
          if (route.index > 0) {
            navigator.pop();
          }
        }}
        {...this.props} />
    );
  }
  render() {
    return (
      <Navigator
        initialRoute={<View />}
        renderScene={this.renderScene.bind(this)}
        navigationBar={
          <Navigator.NavigationBar
            style={{backgroundColor: 'gray'}}
            routeMapper={RouteMapper} />
        } />
    );
  }
};
        BackHandlerを使用したハードウェアのバックボタン検出の例
BackAndroidは廃止予定です。 BackAndroidではなくBackHandlerを使用します。
import { BackHandler } from 'react-native';
{...}
  ComponentWillMount(){
    BackHandler.addEventListener('hardwareBackPress',()=>{   
      if (!this.onMainScreen()) {
        this.goBack();
        return true;
      }
      return false;
    });
  }    
        BackHandlerとナビゲーションプロパティを使用したハードウェアのバックボタン処理(非推奨のBackAndroidと非推奨のNavigatorを使用しない)
この例では、ほとんどのフローで一般的に予想されるナビゲーションを表示します。予想される動作に応じて、次のコードをすべての画面に追加する必要があります。 2つのケースがあります:
- スタックに複数の画面がある場合、デバイスの戻るボタンは前の画面を表示します。
 - スタックに1つの画面しかない場合、デバイス戻るボタンはアプリを終了します。
 
ケース1:前の画面を表示する
import { BackHandler } from 'react-native';
constructor(props) {
    super(props)
    this.handleBackButtonClick = this.handleBackButtonClick.bind(this);
}
componentWillMount() {
    BackHandler.addEventListener('hardwareBackPress', this.handleBackButtonClick);
}
componentWillUnmount() {
    BackHandler.removeEventListener('hardwareBackPress', this.handleBackButtonClick);
}
handleBackButtonClick() {
    this.props.navigation.goBack(null);
    return true;
}
 重要:コンストラクタでメソッドをバインドし、componentWillUnmountのリスナを削除することを忘れないでください。
ケース2:終了アプリケーション
この場合、アプリを終了する画面上で何も処理する必要はありません。
重要:これはスタック上にのみ表示する必要があります。
Modified text is an extract of the original Stack Overflow Documentation
        ライセンスを受けた CC BY-SA 3.0
        所属していない Stack Overflow