Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get context inside onClick(DialogInterface v, int buttonId)?

Getting the context inside onClick(View view), the callback for a button's onClickListener(), is easy:

view.getContext()

But I can't figure out how to get the context inside onClick(DialogInterface v, int buttonId), the callback for a dialog's onClickListener

public class MainActivity extends Activity implements android.content.DialogInterface.OnClickListener

Is this possible?

like image 876
an00b Avatar asked Mar 27 '11 03:03

an00b


3 Answers

You can reference an outer context when you define your DialogInterface.OnClickListener as an anonymous class. If you're in an activity you can use MyActivity.this as the context.

Edit - since your Activity is implementing DialogInterface.OnClickListener, you should be able to just use this as the context.

like image 109
Matthew Willis Avatar answered Nov 19 '22 10:11

Matthew Willis


If your DialogInterface is within MainActivity, then you can get the context using

MainActivity.this.getActivityContext();

Btw You can also implement the DialogInterface (in your code sample, you have written implements twice) and the same statement can be used to get the activity context.

like image 44
Karan Avatar answered Nov 19 '22 09:11

Karan


Here is how you do it in case you

  1. do not want to have any anonymous class usage
  2. or having your activity/fragment implement the interface directly.

Just simply,

  1. use dialogInterface object and cast it to Dialog object
  2. then call getContext()

Example with DialogInterface.OnClickListener:

DialogInterface.OnClickListener foo = new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialogInterface, int which) {
        Dialog dialog  = (Dialog) dialogInterface;
        Context context = dialog.getContext();
        // do some work with context
    }
};

This will also work for the following interfaces as well, just use the first param DialogInterface dialogInterface and cast.

  • DialogInterface.OnCancelListener
  • DialogInterface.OnDismissListener
  • DialogInterface.OnKeyListener
  • DialogInterface.OnMultiChoiceClickListener
  • DialogInterface.OnShowListener
like image 16
petey Avatar answered Nov 19 '22 11:11

petey