我有一个要求,当按下后退按钮时,我需要退出该应用程序。基本上,我尝试使用BackHandler
API,该API可以运行但有一定的限制。因此,就我而言,我认为最好的方法是卸载所有先前安装的组件,以便当前屏幕成为堆栈中的第一个屏幕。
我有以下屏幕:
登录
OtpVerification
名称
电子邮件
。
。
。
我需要的是,当我在名称屏幕上时,如果有人按下“后退”按钮,则该应用程序应该退出。但是,如果有人在电子邮件屏幕上,则用户应该只能返回到名称屏幕。
使用BackHandler的代码段
constructor(props) {
super(props);
.
.
BackHandler.addEventListener("hardwareBackPress", this._handleBackPress);
}
.
.
.
.
_handleBackPress = () => {
BackHandler.exitApp();
};
.
.
.
.
_onPress = () => {
BackHandler.removeEventListener("hardwareBackPress", this._handleBackPress);
this.props.navigation.navigate("Email", { name: this.state.name });
};
答案 0 :(得分:1)
解决方案是在导航到“名称”屏幕之前重置堆栈导航器。
在反应导航中使用 public String Call() {
SoapObject request = new SoapObject(TARGET_NAMESPACE,OPERATION_NAME);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.setOutputSoapObject(request);
HttpTransportSE httpTransport = new HttpTransportSE(SOAP_ADDRESS);
Object response = null;
try {
httpTransport.call(SOAP_ACTION, envelope);
response = envelope.getResponse();
} catch (Exception exception) {
response = exception.toString();
}
return response.toString();
}
操作来执行此操作。 documentation
执行此功能的快速示例是-
反应导航5-使用CommonActions
reset
反应导航v4.x
import { CommonActions } from '@react-navigation/native';
reset = (routeName) => {
return navigation.dispatch(CommonActions.reset(
{
index: 0,
routes: [{ name: routeName }]
}
));
}
将其放在reset = (routeName) => {
return this.props
.navigation
.dispatch(NavigationActions.reset(
{
index: 0,
actions: [
NavigationActions.navigate({ routeName })
]
}));
}
屏幕中,并在导航到OtpVerification
时致电reset('NameScreen')