Android:显示上次调用的值的 EditTextPreference 对话框

Android: EditTextPreference dialog showing value from previous invocation

在我的应用程序中,我在设置屏幕中有一个帐户列表。如果您单击一个帐户,您会转到一个显示帐户详细信息的屏幕。帐户名称是一个 EditTextPreference,如果您单击它 Android 会显示一个对话框,使您可以更改帐户名称。

第一次显示此对话框时没有指定值。用户输入帐户的新名称并单击“确定”,帐户名称已更新。

问题是当我查看不同的帐户详细信息并单击其名称进行编辑时,对话框显示的是我之前重命名的文本。为什么这不显示任何值或帐户的当前名称?为什么要重复使用来自不同帐户的值?

问题是因为您对所有帐户使用一个对话框。

您应该在按确定后清除编辑文本,您还应该使用 SharedPreference 来存储每个帐户的详细信息。

问题是因为共享首选项名称是 "global"。因此,当您打开一个帐户的首选项时,您将获得上次设置的值。

我们所做的修复是在我们设置屏幕的 onCreate() 中,我们将帐户名称首选项重置为设置屏幕所针对的帐户名称。然后当打开编辑名称对话框时,它具有正确的帐户名称。