我有一个登录屏幕,其中有两个编辑文本用户名和密码。一旦我填写了这些编辑文本,并使用:
navController.navigate(R.id.registerFragment);
导航到注册屏幕,当我使用:navController.popBackStack();
返回登录屏幕时,密码的编辑文本输入将被复制并替换用户名的编辑文本。有人可以解释为什么会发生这种情况吗?
步骤很简单:填写编辑文本 -> 导航到注册屏幕 -> 返回登录屏幕 -> 密码编辑文本输入已粘贴到用户名编辑文本输入。
例如,当您第一次打开登录屏幕时,它会添加到后台堆栈中。您可以在 EditText 字段中输入文本,然后导航到注册屏幕,该屏幕也会添加到后台堆栈中,覆盖登录屏幕。当您导航到注册屏幕时,登录屏幕仍保留在后台堆栈中,表明它尚未清除或关闭。因此,当您尝试调用 popBackStack() 时,它将关闭当前的注册屏幕并显示仍在后台堆栈中的登录屏幕。 Fragment Backstack 采用 LIFO(后进先出)方法。因此,如果您希望清除 EditText 中的文本,那么您必须在 onResume 方法或类似方法中手动执行此操作。