BackHandler не закрывает приложение React Native - PullRequest
0 голосов
/ 25 февраля 2019

Я пытаюсь вызвать кнопку «Назад» на Android, чтобы закрыть приложение, но оно просто не работает.Со стороны JS я вижу, как выполняется BackHandler.exitApp():

const handleHardwareBack = navigation => () => {
    // Back performs pop, unless we're to main screen [0,0]
    if (navigation.state.index === 0 || navigation.state.index === 2) {
        BackHandler.exitApp();
        return false;
    }
    return navigation.goBack(null);
};

Со стороны Android я вижу, как выполняется эта часть:

@Override
public void onBackPressed() {
    if (mReactInstanceManager != null) {
        mReactInstanceManager.onBackPressed();
    } else {
        super.onBackPressed();
    }
}

Но так как всегда естьmReactInstanceManager, super.onBackPressed(); никогда не вызывается (именно он закрывает приложение).

Чего мне не хватает?Как я могу / могу я увидеть, если я

1 Ответ

0 голосов
/ 25 февраля 2019

попробуйте это:

 import {BackHandler} from 'react-native';

export default class RoomType extends Component {
     _didFocusSubscription;
     _willBlurSubscription;
     constructor(props) {
         super(props);
         this._didFocusSubscription = props.navigation.addListener('didFocus',payload =>
            BackHandler.addEventListener('hardwareBackPress', this.onBackButtonPressAndroid)
         ); 
     }
  }
componentDidMount() {
        this._willBlurSubscription = this.props.navigation.addListener('willBlur', payload =>
            BackHandler.removeEventListener('hardwareBackPress', this.onBackButtonPressAndroid)
        );
 }
componentWillUnmount() {
        this._didFocusSubscription && this._didFocusSubscription.remove();
        this._willBlurSubscription && this._willBlurSubscription.remove();
    }
onBackButtonPressAndroid = () => {
    //code when you press the back button
    // Back performs pop, unless we're to main screen [0,0]
    if (navigation.state.index === 0 || navigation.state.index === 2) {
        BackHandler.exitApp();
        return true;
    }
 };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...