如果我使用 Activity 实例,我可以显示对话框,但当我使用上下文或应用程序上下文实例时,对话框不会显示。
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
builder.setTitle(title);
builder.setMessage(msg);
if (null != positiveLabel) {
builder.setPositiveButton(positiveLabel, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
if (null != listener) {
listener.onOk();
}
}
});
}
if (null != negativeLable) {
builder.setNegativeButton(negativeLable, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
if (null != listener) {
listener.onCancel();
}
}
});
}
builder.create().show();
您能给我一个在不使用 Activity 实例的情况下显示对话框的解决方案吗
这是其中之一MOST关于上下文,您必须始终记住的重要事项。有两种类型的上下文,Activity contexts
and Application contexts
。您将在许多 UI 相关类中观察到传递了 Context。这不是应用程序上下文!在这种情况下,您必须始终传递活动上下文。除了一个Toast
,没有其他 UI 组件可以与应用程序上下文一起使用。
当您需要某些与应用程序相关的服务或组件(例如电话管理器、位置管理器等)时,始终会传递应用程序上下文。
对于 UI,您必须始终传递与 UI 相关的上下文,即 Activity。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)