我正在使用导航图,其中我有两个片段(登录片段和主片段),登录片段用于对用户进行身份验证,主片段正在显示数据列表。成功验证后,我可以导航到主片段但是当我点击后退按钮,应用程序既没有关闭也无法导航回登录片段。这是我的导航图代码
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/nav_graph"
app:startDestination="@id/authenticationScreen">
<fragment
android:id="@+id/authenticationScreen"
android:name="com.example.grocer.authentication.AuthenticationScreen"
android:label="AuthenticationScreen" >
<action
android:id="@+id/action_authenticationScreen_to_mainFragment"
app:destination="@id/mainFragment" />
</fragment>
<fragment
android:id="@+id/mainFragment"
android:name="com.example.grocer.mainscreen.MainFragment"
android:label="MainFragment" >
<action
android:id="@+id/action_mainFragment_to_choiceSelectedFragmentModel"
app:destination="@id/choiceSelectedFragmentModel" />
</fragment>
成功认证后,我希望用户导航到主片段。因此,如果用户单击后退按钮,应用程序将关闭,而不会导航回登录片段。这是我的登录片段代码
class AuthenticationScreen : Fragment(){
private fun signIn() {
val signInIntent = mGoogleSignInClient.signInIntent
startActivityForResult(signInIntent, RC_SIGN_IN)
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == RC_SIGN_IN) {
val task = GoogleSignIn.getSignedInAccountFromIntent(data)
try {
val account = task.getResult(ApiException::class.java)
firebaseAuthWithGoogle(account!!)
} catch (e: ApiException) {
showShortToast(e.message!!)
}
}
}
private fun firebaseAuthWithGoogle(acct: GoogleSignInAccount) {
val credential = GoogleAuthProvider.getCredential(acct.idToken, null)
mAuth.signInWithCredential(credential)
.addOnCompleteListener{
if(it.isSuccessful){
updateUI()
showShortToast("success")
}else{
showShortToast("failed")
}
}
}
override fun onStart() {
super.onStart()
if(mAuth.currentUser == null){
}else{
updateUI()
}
}
private fun updateUI(){
findNavController().navigate(R.id.action_authenticationScreen_to_mainFragment)
}
}
我应该如何解决这个问题?谁能告诉我?