2012-09-26 34 views
1

我希望我的程序能够存储远程服务的凭证,因此用户可以将它们设置为首选项,并且永远不会再这样做。如何在DialogPreference中调用默认按钮处理程序?

所以我已经将子类化为DialogPreference,并且我的类显示了一个很好的对话框,其中包含两个用于登录名和密码的字段。很好。

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

这是第一个问题:DialogPreference的默认行为是关闭按钮时单击(我想知道为什么?) - 当然我可以重写onDialogClosed()并验证登录那里,但对话框关闭否如果我打电话super.onDialogClosed()或不。

好吧,经过几个小时的搜索和尝试,我发现an answer看起来很棒乍一看:正面按钮上的点击处理器允许我想要的东西。但是另一个问题是:当原始点击处理程序被替换时,对话框不再关闭。调用super.onDialogClosed()没有帮助;我假设这个方法只是一个不提供任何控制的通知。

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

+1

你有没有打过电话关闭该对话框类的()方法,你与验证完成后? like:getDialog()。dismiss() –

+0

嗯,这工作,甚至调用onDialogClosed;现在唯一的问题(次要)是onDialogClosed接收到false,就像我取消对话框一样。这当然不是问题,因为我可以将数据保存在我的处理程序中并抛出DialogClosed。我想知道为什么没有接受()会做同样的事情,但会产生积极的结果? –

+0

其实我没有得到关于accept()方法(我的坏)的问题..你能描述一下吗? 如果您接受同样的答案,我将添加以前的评论作为答案;) –

回答

2

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

,如:getDialog().dismiss()

相关问题