In the earlier Android Programming Tutorial, page 192, we see an implementation of LunchList#onOptionsItemSelected
. Within this implementation we see two Intent
s passed to startActivity
: one whose constructor is passed LunchList.this
, the other whose constructor is passed this
.
What's the difference?
See lines 78 - 91 here. Note how onOptionsItemSelected
is not declared within an inner class.
In Android/Java does the value of this
change within the context of event handlers or function binding via reflection? Could both Intent
instances be passed this
?
In Java, this
refers to the containing class, and ClassName.this
refers to the first containing class whose name is ClassName
. Event handlers are typically written as anonymous, inner classes, so if you want to refer to the event handler's containing class (and not the event handler's class), you need to specify ContainingClass.this
, not this
.
Reference: http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.8.4
When you are creating an Intent
inside an Inner Class
use ClassName.this
(here className must be the Activity class Name) and if creating Intent
inside an Activity
class you can use this
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With