为什么导航到其他屏幕然后返回时,编辑文本输入会填充所有其他编辑文本?

问题描述 投票:0回答:1

我有一个登录屏幕,其中有两个编辑文本用户名和密码。一旦我填写了这些编辑文本,并使用:

 navController.navigate(R.id.registerFragment);
导航到注册屏幕,当我使用:
navController.popBackStack();
返回登录屏幕时,密码的编辑文本输入将被复制并替换用户名的编辑文本。有人可以解释为什么会发生这种情况吗?

步骤很简单:填写编辑文本 -> 导航到注册屏幕 -> 返回登录屏幕 -> 密码编辑文本输入已粘贴到用户名编辑文本输入。

此图显示了我第一次编辑编辑文本时:

此图像显示相同的编辑文本,但在我从注册屏幕返回后,我已使用注册现在的红色文本进行导航。

java android navigation android-edittext android-navigation
1个回答
0
投票

例如,当您第一次打开登录屏幕时,它会添加到后台堆栈中。您可以在 EditText 字段中输入文本,然后导航到注册屏幕,该屏幕也会添加到后台堆栈中,覆盖登录屏幕。当您导航到注册屏幕时,登录屏幕仍保留在后台堆栈中,表明它尚未清除或关闭。因此,当您尝试调用 popBackStack() 时,它将关闭当前的注册屏幕并显示仍在后台堆栈中的登录屏幕。 Fragment Backstack 采用 LIFO(后进先出)方法。因此,如果您希望清除 EditText 中的文本,那么您必须在 onResume 方法或类似方法中手动执行此操作。

© www.soinside.com 2019 - 2024. All rights reserved.