如果我使用Activity实例,但是当我使用Context或Application Context实例时,我可以显示对话框.
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();
Run Code Online (Sandbox Code Playgroud)
你能不能使用Activity实例给我一个显示对话框的解决方案
Shu*_*ayu 24
这是您必须始终记住的关于上下文的最重要的事情之一.有两种类型的上下文,Activity contexts和Application contexts.您将在许多UI相关类中观察到,传递了一个Context.这不是应用程序上下文!在这种情况下,您必须始终传递活动上下文.除了a之外Toast,没有其他UI组件可以与Application上下文一起使用.
当您需要与应用程序相关的某些服务或组件(如Telephony Manager,位置管理器等)时,始终会传递应用程序上下文.
对于UI,您必须始终传递与UI相关的上下文,即Activity.
问题是我最近也面临的问题,你不能创建一个没有和活动实例的对话框.getApplicationContext()调用也不起作用.我这样做的方法是调用一个方法,从一个活动创建对话框,并传递"this"即对该活动的引用作为参数.
如果要重用此代码,作为可重用组件或在多个位置创建对话框的机制,请创建基本活动类并在其中使用此方法,并根据需要在子类活动中使用它.
| 归档时间: |
|
| 查看次数: |
18724 次 |
| 最近记录: |