Inside OnClickListener I cannot access a lot of things - how to approach?

Total Post:7

 663  View(s)
Rate this:
Inside an OnClickListener I cannot access most variables "outside" of the scope, like this:
findViewById( OnClickListener()
            public void onClick(View v)
                Intent mainApps = new Intent(Intent.ACTION_MAIN);
                List<ActivityInfo> activities = this.getPackageManager().queryIntentActivities(mainApps, 0);
                Intent intent = new Intent("");

in this example I need to get the PacketManager, and I cannot get it since I do not have the Context available inside the OnClickListener.

I could make a static reference outside, and use it inside, but is that correct? Seems odd to have to do that all the time?
  1. Post:397

    Re: Inside OnClickListener I cannot access a lot of things - how to approach?

    Replace this in your code with MyActivity.this where MyActivity is the class name of your Activity subclass.

    Explanation: You are creating an anonymous inner class when you use this part of your code: 
    new OnClickListener() {
    Anonymous inner classes have a reference to the instance of the class they are created in. It looks like you are creating it inside an Activity subclass because findViewById is an Activity method. Activity's are a Context, so all you need to do is use the reference to it that you have automatically.



Enter your email address here always to be updated. We promise not to spam!