Использование Android AlertDialog - PullRequest
       14

Использование Android AlertDialog

2 голосов
/ 13 октября 2011

Я хочу создать отдельный класс, который я могу вызывать, когда мне нужно показать AlertDialog с параметрами и именем сына, которые я хочу.

Проблема в том, что я не знаю, должен ли этот класс быть Activity... alertDialog нужен контекст, но я могу отправить текущий, потому что я хочу показать предупреждение о фактической активности (не создавать новую, я хочу показать предупреждение на реальном экране).Но я не могу получить это.Я получаю ошибки при отправке контекста фактической активности ...

Только когда я работаю с ним, когда создаю этот класс, такой как Activity, но с этим, alertDialog появляется один без фактического экрана позади.

Что я могу сделать?Я не знаю, понимаю ли я контексты ...

Спасибо

Ответы [ 2 ]

1 голос
/ 13 октября 2011

Вашему классу не нужно расширять что-либо для создания диалога.Вы можете попробовать этот способ создать статический метод, который создает диалог для вас.Убедитесь, что при вызове вашего метода вы используете ЭТО, а не getApplicationContext ()

MyDialogClass.getDialog(this); //good! 
MyDialogClass.getDialog(getApplicationContext()); //results in error

Это, вероятно, является причиной вашей ошибки

Пример класса:

public class MyDialogClass
{
 public static AlertDialog getDialog(Context context)
    {
        Builder builder = new Builder(context);
        builder.setTitle("Title").setMessage("Msg").setCancelable(false)
                .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int id)
                    {


                    }
                }).setNegativeButton("No", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int id)
                    {

                    }
                });
        return builder.create();
    }
}
0 голосов
/ 13 октября 2011

AynscTask не нуждается в Context;и нет, это не должно быть деятельностью.http://developer.android.com/reference/android/os/AsyncTask.html

В любом случае, вы сможете получить контекст в любое время без проблем.Просто сделайте это:

public class MyApplication extends Application{

    private static Context context;

    public void onCreate(){
        super.onCreate();
        context = getApplicationContext();
    }

    public static Context getAppContext() {
        return context;
    }
}

Тогда вы можете получить контекст из любой точки, где вы хотите, с помощью MyApplication.getAppContext(); и передать его, и он должен работать.

...