如何在 DialogInterface.OnClickListener.onClick() 中获取 Activity 上下文?
Posted
技术标签:
【中文标题】如何在 DialogInterface.OnClickListener.onClick() 中获取 Activity 上下文?【英文标题】:How do I get Activity Context inside DialogInterface.OnClickListener.onClick()? 【发布时间】:2017-09-22 22:37:19 【问题描述】:我在看这个问题:
How to get Context inside DialogInterface.OnClickListener
但没有一个答案对我有帮助。
如何在DialogInterface.OnClickListener
的onClick()
方法中访问Activity 上下文(不使用Activity.this)?
【问题讨论】:
【参考方案1】:我想从AlertDialog
的onClick()
方法中访问父活动,但不想维护活动引用,因为我的AlertDialog
的onClick()
处理程序在另一个文件中。对于 API 23 和更新版本,这对我有用:
在调用 AlertDialog.Builder 的活动中,我添加了这个:
dialog.setOwnerActivity(this);
dialog.show();
.....
然后我将我的构建器传递给另一个类。所以在这个实现 DialogInterface.OnClickListener 的单独类中:
@Override
public void onClick(DialogInterface dialogInterface, int which)
Dialog dialog = (Dialog) dialogInterface;
Activity activity = dialog.getOwnerActivity();
// do some work with activity
;
这将适用于所有 DialogInterface 侦听器。
感谢@petey 的this answer 为我指明了正确的方向。
【讨论】:
以上是关于如何在 DialogInterface.OnClickListener.onClick() 中获取 Activity 上下文?的主要内容,如果未能解决你的问题,请参考以下文章
如何在异步任务中调用意图?或者如何在 onPostExecute 中开始新的活动?