我有一个AlertDialog dlgDetails
,它是从另一个AlertDialog dlgMenu
显示的。我希望能够在用户按下dlgDetails中的“后退”按钮时再次显示dlgMenu,并且在用户按下对话框外部的按钮时简单地退出对话框。
我认为最好的方法是为dlgDetails覆盖onBackPressed
,但我不确定如何实现,因为AlertDialogs必须使用Builder间接创建。
我尝试创建一个派生的AlertDialog(public class AlertDialogDetails extends AlertDialog { ...}
),但我想我还必须在该类中扩展AlertDialog.Builder
以返回AlertDialogDetails,但有没有更简单的方法?如果没有,您将如何覆盖构建器?
5条答案
按热度按时间j91ykkif1#
最后我在对话框中添加了一个键监听器来监听Back键。虽然没有覆盖
onBackPressed()
那么优雅,但它还是可以工作的。代码如下:答案在Kotlin看到这里:Not working onbackpressed when setcancelable of alertdialog is false
mnowg1ta2#
找到了一个更短的解决方案:)试试这个:
mznpcxlj3#
这将处理“后退”按钮和在对话框外部单击:
dialog.cancel()
是密钥:对于dialog.dismiss()
,这将仅处理对话框外部的点击,如上所述。kmb7vmvb4#
我在java类中创建了一个新函数,并从对话框生成器的onClick方法调用了该函数。
3npbholx5#
下面是一个基于answer from Pooks的C#实际解决方案:
首先,我们必须创建一个新类来处理事件:
我们需要一个动作来接收事件:
现在,我们可以设置此事件: