我是否正确地认为"这个"在以下两个命题中是一样的吗?:
public class TheClass extends Activity implements onItemClick {
public void onItemClick( ... ) {
Intent intent1 = new Intent(this, SomeClass.class); // proposition 1
Intent intent2 = new Intent(TheClass.this, SomeClass.class); // proposition 2
...
}
}
如果TheClass没有实现onItemClick并且意图是在匿名函数内创建的,该怎么办?
编辑:TheClass扩展了Activity
答案 0 :(得分:0)
Intent的第一个参数是有效的上下文。在您的情况下,这不是指有效的上下文。
http://developer.android.com/reference/android/content/Intent.html#Intent(android.content.Context,java.lang.Class)
是this
而TheClass.this
是指TheClass
。但TheClass
并未扩展Activity
。这不是你想要的。您需要一个有效的上下文作为第一个参数
Intent intent1 = new Intent(ActivityName.this, SomeClass.class);
您可能需要查看
Why do you have to pass this Context as a parameter in Android development?
自编辑
public class TheClass extends Activity implements onItemClick {
两个
Intent intent1 = new Intent(this, SomeClass.class);
Intent intent2 = new Intent(TheClass.this, SomeClass.class);
参考扩展活动的TheClass
java.lang.Object
↳ android.content.Context //see this
↳ android.content.ContextWrapper
↳ android.view.ContextThemeWrapper
↳ android.app.Activity // see this
如果TheClass没有实现onItemClick并且意图是 在匿名函数内创建?
如果匿名内部类使用TheClass.this
,this
不是有效的上下文。