setOnClickListener takes a reference (pointer) to an object as its
argument. That object must implement the onClick() method. So when a
click occurs, the onClick method of that object (that specific
instance of that class) is called. Using "this" just directs that the
onClick method of the current object be used if a click occurs.
Another way to understand "this":
public class MyClass {
public void myMethod(Object someObj) {
if (someObj == this) {
System.out.println("someObj == this");
}
else {
System.out.println("someObj != this");
}
}
public class MyOtherClass {
public void doSomething() {
MyClass theInstance = new MyClass();
MyClass notTheInstance = new MyClass();
theInstance ->myMethod(theInstance); // This will print "=="
theInstance ->myMethod(notTheInstance); // This will print "!="
theInstance ->myMethod(this); // This will print "!="
}
}
On Jul 16, 2:43 pm, Keith Roberts <[email protected]> wrote:
> setOnClickListener actually takes the callback method that will be
> invoked when the user presses the button interface as an argument, so
> it doesn't take a view.... Basically you're saying "this" is just a
> reference to the current object you're in. So if you're in a specific
> method and you use this, it tells the complier to pass in class
> variables not the local ones because the instance of the class would
> be outside of the method?? also, if your class contains multiple
> instances how does the complier know which one "this" is referring
> too?
>
> On Jul 13, 1:47 am, Justin Anderson <[email protected]> wrote:
>
> > *> I know that the keyword "this" refers to an instance variable or can
> > invoke a constructor*
> > That is not what the keyword "this" references. It references the instance
> > of the class you are currently in...
>
> > *> but I don't understand how passing "this" as the arg for
> > setOnClickListener () works?Could someone explain?*
> > Take a look at the argument list for setOnClickListener... One of the
> > arguments is probably a View. So, when you are calling setOnClickListener
> > and you are in a class that inherits View, you pass "this" because "this"
> > is-a View instance. It wouldn't work if you were calling setOnClickListener
> > from a class that didn't eventually inherit from View.
>
> > Hope that helps... sounds to me like you may want to brush up a little bit
> > on Java.
>
> > ----------------------------------------------------------------------
> > There are only 10 types of people in the world...
> > Those who know binary and those who don't.
> > ----------------------------------------------------------------------
>
> > On Mon, Jul 12, 2010 at 8:50 PM, Keith Roberts <[email protected]> wrote:
> > > Hey all,
>
> > > I know that the keyword "this" refers to an instance variable or can
> > > invoke a constructor, but I don't understand how passing "this" as the
> > > arg for setOnClickListener () works?Could someone explain?
>
> > > Thanks,
>
> > > keith
>
> > > --
> > > You received this message because you are subscribed to the Google
> > > Groups "Android Beginners" group.
>
> > > NEW! Try asking and tagging your question on Stack Overflow at
> > >http://stackoverflow.com/questions/tagged/android
>
> > > To unsubscribe from this group, send email to
> > > [email protected]<android-beginners%2Bunsubscr
> > > [email protected]>
> > > For more options, visit this group at
> > >http://groups.google.com/group/android-beginners?hl=en
--
You received this message because you are subscribed to the Google
Groups "Android Beginners" group.
NEW! Try asking and tagging your question on Stack Overflow at
http://stackoverflow.com/questions/tagged/android
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-beginners?hl=en