我正在尝试创建一个自定义对话框类,该类继承自Dialog,允许用户选择联系人。我可以通过使用以下方式让联系人选择显示正常:
this.getOwnerActivity().startActivityForResult(...);
问题是当用户选择联系人时,它会在对话框的父活动上调用onActivityResult();我想在对话框类中封装活动结果的处理,而不是父活动。
This chap asked the same question,但没有得到可行的答案:
inside Android Dialog, how to setup onActivityResult for startActivityForResult?
这可能吗?看起来像是一件非常基本的事情,所以我认为有办法。
我可以将对话框转换为一个全新的活动,但该对话框在应用程序的上下文中非常好用,所以我宁愿不必诉诸于此。
答案 0 :(得分:5)
该对话框是其活动的次要对象。当您使用startActivityForResult()
开始活动时,您的对话框将被解除(您的活动可能会被回收)。因此,当您返回YourActivity.onActivityResult()
时,对话框不活动,实际上原始对话框对象不再存在。您可以再次实例化对话框,显示它,将必要的数据传递给它,让它做一些事情,但这似乎是一个非常糟糕的设计。相反,在活动中处理结果并打开一个对话框以与用户进行通信。
答案 1 :(得分:1)
您可以使用DialogFragment代替Dialog。 @BlackRider已经回答该对话框是其活动的次要对象。当您使用startActivityForResult()启动活动时,您的对话框将被解除