Я хочу, чтобы пользователь не возвращался на предыдущий экран. Поэтому я добавил код, но это не работает. Есть ли решения для этого? Всплывающее предупреждение появляется, но "return false" не работает.
componentDidMount() {
BackAndroid.addEventListener('hardwareBackPress', () => {
Alert.alert("alert","alert")
this.props.navigator.pop();
return false;
});
Ответ 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.