Frion3L
Frion3L

Reputation: 1522

Using Android AlertDialog

I want to create a single class which I can call when I need to show an AlertDialog with the parameters and son on I want.

The problem is I dont know if that class have to be an Activity... the alertDialog needs an context, but I can send the current one, because what I want is to show the alert on the actual activity (not to create a new one, I want to show the alert on the actual screen). But I cant get it. I get errors sending the context of the actual activity...

Only I get working it when I create that class like an Activity, but with that, the alertDialog appears alone without the actual screen behind.

What Can I do? I don't know if I understand the contexts...

Thanks

Upvotes: 2

Views: 1262

Answers (2)

dymmeh
dymmeh

Reputation: 22306

Your class does not need to extend anything to produce a dialog. You can try this way to produce a static method that creates a dialog for you. Make sure when you call your method you use THIS and not getApplicationContext()

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

That is likely the cause of your error

Example class:

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();
    }
}

Upvotes: 1

Caner
Caner

Reputation: 59168

AynscTask does not need the Context; and no, it doesn't need to be an activity. http://developer.android.com/reference/android/os/AsyncTask.html

Anyways, you should be able to get the context anytime with no problems. Just do this:

public class MyApplication extends Application{

    private static Context context;

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

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

Then you can get the context from wherever you want with MyApplication.getAppContext(); and pass it on and it should work.

Upvotes: 0

Related Questions