当传递给 Intent 构造函数时,从事件处理程序传递 this 与 ClassName.this 有什么区别?



在早期的 Android 编程教程第 192 页中,我们看到了 LunchList#onOptionsItemSelected 的实现。在这个实现中,我们看到两个Intent传递给startActivity:一个是构造函数传递LunchList.this,另一个是构造函数传递this

有什么区别?

请参阅此处的第 78 - 91 行。请注意如何在内部类中声明onOptionsItemSelected

在 Android/Java 中,this的值是否会在事件处理程序或函数绑定的上下文中通过反射而改变?两个Intent实例都可以传递this吗?

在 Java 中,this 是指包含类,ClassName.this 是指名称为 ClassName 的第一个包含类。 事件处理程序通常编写为匿名的内部类,因此如果要引用事件处理程序的包含类(而不是事件处理程序的类),则需要指定ContainingClass.this,而不是this

参考: http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.8.4

当您在Inner Class中创建Intent时,请使用ClassName.this(此处className必须是活动类名称),如果在Activity类中创建Intent则可以使用this

对于此示例,它不会有任何区别,因为在任一条件下,启动活动的类都将保持不变。Intent 的第一个参数是指类的上下文,从中启动活动以及从中传递捆绑包数据。

相关内容

  • 没有找到相关文章

最新更新