const RootNav = createStackNavigator(
{
Splash: {
screen:Splash
},
BeforeLogin: {
screen:BeforeLogin
},
Signin: {
screen:Signin,
},
Signup: {
screen:Signup
},
Tabs: {
screen:TabHolder,
},
ForgotPassword: {
screen:ForgotPassword
},
} );
我正在componentWillMount
屏幕上使用此BeforeLogin
。当用户按下android后退按钮时,我想关闭该应用程序。
componentWillMount() { // In BeforeLogin Screen
BackHandler.addEventListener('hardwareBackPress',() => {
BackHandler.exitApp();
});
}
在Signup
和Signin
屏幕上,我正在使用下面的componentWillMount
componentWillMount() {
BackHandler.addEventListener('hardwareBackPress',() => {
this.props.navigation.goBack();
return true;
});
}
我无法使用this.props.navigation.navigate('BeforeLogin)
,因为在“登录”屏幕中,我输入了文本没有帐户?立即注册,导航到“注册”屏幕。
已经有帐户了?立即登录,然后进入“登录”屏幕。
使用到目前为止我尝试过的所有代码,当我从BeforeLogin
屏幕上按下android back按钮时,我无法关闭该应用程序。
我使用goBack(null) too, it takes me to the
Splash screen when I press android back button from
“登录前”屏幕进行了尝试。
************************第二种替代方法也无效****************** *****
我在this.props.navigation.pop(1);
和Signup
屏幕中使用了Signin
。当我从Splash
屏幕按下android后退按钮时,将我带到BeforeLogin
屏幕。
请帮助。
更新代码
请检查以下链接。这是我的问题的代码。 https://gist.github.com/shubham6996/2c69f5a270d88c710ab61487639bf1af
答案 0 :(得分:0)
在您要单击后随后要关闭屏幕的屏幕中(我假设在登录之前):
var recognition = new webkitSpeechRecognition;
var returnedSpeech=[];
recognition.onresult = function(event) {
if (event.results.length > 0) {
speech.value = event.results[0][0].transcript;
speech.form.submit();
var x=speech.value
document.write(x.value)
}
}
由于堆栈导航在那里的工作方式,您不能依赖React导航中常规的生命周期(实际上,由于它们仍安装在neth下,它们仅获得一些生命周期)。因此,基本上,您需要依靠导航本身发送的特殊事件。