Подтвердить что ты не робот

Предотвращение андроида обратной связи с оборудованием для React Native

Я хочу, чтобы пользователь не возвращался на предыдущий экран. Поэтому я добавил код, но это не работает. Есть ли решения для этого? Всплывающее предупреждение появляется, но "return false" не работает.

componentDidMount() {
   BackAndroid.addEventListener('hardwareBackPress', () => {
     Alert.alert("alert","alert")

      this.props.navigator.pop();

       return false;
   });
4b9b3361

Ответ 1

Вам необходимо вернуть значение true, если вы хотите отключить поведение кнопки "Назад" по умолчанию.

Вот пример компонента, который заблокирует пользователю возврат к предыдущему экрану.

import React, {Component,} from 'react';
import {
    View,
    Text,
    BackHandler,
    ToastAndroid,
} from 'react-native';

class BackButtonDemo extends Component {
    componentDidMount() {
        BackHandler.addEventListener('hardwareBackPress', this.handleBackButton);
    }

    componentWillUnmount() {
        BackHandler.removeEventListener('hardwareBackPress', this.handleBackButton);
    }

    handleBackButton() {
        ToastAndroid.show('Back button is pressed', ToastAndroid.SHORT);
        return true;
    }

    render() {
        return (
            <View>
                <Text>Back button example</Text>
            </View>
        );
    }
}

module.exports = BackButtonDemo;

Замечания:

Также удалите this.props.navigator.pop(); из вашего решения.

Всплывающая функция Navigator перенесет пользователя на предыдущий экран, отображаемый Navigator.

Ответ 2

Я отключу мою кнопку назад (android) для всего приложения, добавив этот код в App.js

componentDidMount() {
  BackAndroid.addEventListener('hardwareBackPress', this.handleBackButton);
}

componentWillUnmount() {
  BackAndroid.removeEventListener('hardwareBackPress', this.handleBackButton);
}

handleBackButton() {
  return true;
}

не забудьте импортировать BackAndroid

import {BackAndroid} from 'react-native'

Ответ 3

Если вы используете реагирующее натирование, вам нужно использовать BackHandler вместо BackAndroid

import { BackHandler } from 'react-native';

// code

componentDidMount() {
  BackHandler.addEventListener('backPress');
}

// some more code

componentWillUnmount() {
  BackHandler.removeEventListener('backPress');
}

Ответ 4

Попробуйте эту кнопку Отключить обратно, просто вернув true

import {BackAndroid} from 'react-native';

componentWillMount() {
   BackAndroid.addEventListener('hardwareBackPress', () => {return true});
} 

Ответ 5

Просто, чтобы дать вам полный ответ при использовании реакции-навигации:

Если вы используете интерактивную навигацию, поместите следующее в свой класс RootNavigation, а не App.js, чтобы отключить обратную кнопку для всего приложения.

import { BackHandler } from 'react-native';

componentDidMount() {
    BackHandler.addEventListener('hardwareBackPress', this.onBackButtonPressed);
}

componentWillUnmount() {
    BackHandler.removeEventListener('hardwareBackPress', this.onBackButtonPressed);
}

onBackButtonPressed() {
    return true;
}

Ответ 6

Включение кнопки возврата оборудования OnBackPressed callback вызывается

вы можете просто удалить супер объявление в onBackPressed обратный вызов.

 @Override
    public void onBackPressed() {

    }

Ответ 7

использование BackHandler от реагировать на родной работал для меня. Просто включите эту строку в ваш ComponentWillMount:

BackHandler.addEventListener('hardwareBackPress', function() {return true}) это отключит кнопку "Назад" на устройстве Android.