我试图从另一个类调用一个警告对话框,但这不是让我将它设置为静态。它显示只允许final,这意味着它不能从其他类调用它。我不确定我是做得对还是有可能。我在第2课中有警告对话框:
static final AlertDialog.Builder alertbox = new AlertDialog.Builder(this);
alertDialog = new AlertDialog.Builder(this).create();
alertbox.setTitle("Hello");
alertbox.setMessage("Press Continue or Cancel");
alertbox.setPositiveButton("CONTINUE",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
alertbox.setNegativeButton("CANCEL",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
alertDialog.setIcon(R.drawable.icon);
然后在class1中调用它:
QuizValidation.alertbox.show();
哪个也无法解决。
如果我可以将第2类中的警告框设置为静态,我可以解决这个问题。
非常感谢任何建议。
由于
答案 0 :(得分:2)
更好的想法是在基类中定义所有对话框,让我们调用它......好吧BaseActivity
Class BaseActivity extends Activity{
int DIALOG_X = 1;
int DIALOG_Y = 2;
int DIALOG_Z = 3;
// More Dialog identifiers
ProgressDialog progressDialog;
AlertDialog alertDialog;
//More dialog objects if you need
protected Dialog onCreateDialog(int id) {
Dialog dialog;
switch(id) {
case DIALOG_X:
// do the work to define the X Dialog
break;
case DIALOG_Y:
// do the work to define the Y Dialog
break;
default:
dialog = null;
}
return dialog;
}
}
然后在另一个类中扩展BaseActivity并调用
showDialog(DIALOG_X);
当您需要显示Dialog_X
时答案 1 :(得分:2)
创建一个Constructor
,您可以在其中获取活动。像这样 -
Activity activity;
public YourClass (Activity activity){
this.activity = activity;
}
现在,使用此activity
作为参数 -
AlertDialog.Builder adb=new AlertDialog.Builder(activity);
因为仅使用context
无法显示对话框。您需要为此提供Activity
。
答案 2 :(得分:0)
您也可以简单地扩展AlertDialog,并自行创建并重复使用。