1

我希望我的程序存储远程服务的凭据,因此用户只需将它们设置在首选项中,就不会再这样做了。

因此,我将 DialogPreference 子类化,并且我的类显示了一个漂亮的对话框,其中包含登录名和密码两个字段。很好。

现在我想在用户输入数据并单击确定时验证数据,只是为了防止存储错误登录时的愚蠢情况,我们必须用警告偷看用户并要求他再次输入数据。

这是第一个问题:当单击按钮时,DialogPreference 的默认行为是关闭(我想知道为什么?)——当然我可以覆盖 onDialogClosed() 并在那里验证登录,但是无论我调用是否都会关闭对话框super.onDialogClosed() 与否。

好的,经过几个小时的搜索和尝试,我找到了一个乍一看很棒的答案:肯定按钮上的点击处理程序允许我想要的。但是另一个问题来了:随着原来的点击处理程序被替换,对话框不再关闭。调用 super.onDialogClosed() 没有帮助;我假设这个方法只是一个不提供任何控制的通知。

那么如何以积极的结果以编程方式关闭 DialogPreference 呢?由于我替换了我的肯定按钮的默认单击处理程序,我想我需要自己调用旧处理程序,但是该怎么做呢?

4

1 回答 1

2

dismiss()完成验证后,您是否尝试过调用Dialog 类的方法?

像 :getDialog().dismiss()

于 2012-09-27T15:30:49.523 回答