Вызов диалогового окна с предупреждением из другого класса - PullRequest
0 голосов
/ 03 марта 2011

Я пытаюсь вызвать диалоговое окно оповещения из другого класса, но это не позволяет мне установить его на статический. Он показывает, что разрешен только 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 на статическое.

Буду признателен за любой совет.

Спасибо

Ответы [ 3 ]

2 голосов
/ 15 октября 2014

Создайте Constructor, где вы можете получить активность.Вот так -

Activity activity;
public YourClass (Activity activity){
         this.activity = activity;
}

Теперь используйте это activity в качестве аргумента -

AlertDialog.Builder adb=new AlertDialog.Builder(activity);

Поскольку диалог не может быть отображен с помощью context,Вы должны предоставить Activity для этого.

2 голосов
/ 03 марта 2011

Лучше определить все ваши диалоги в базовом классе, давайте назовем его ... ну 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

0 голосов
/ 04 марта 2011

Вы также можете просто расширить AlertDialog, сделать свой собственный и использовать повторно.

...