'this'关键字是否仅适用于我的应用主java文件onCreate方法?
如果我尝试在其他任何地方使用'this',我最终会遇到nullPointerException错误。
例如,工作版本:
public class HelloAndroid extends Activity {
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
XmlParser xmlParse = new XmlParser();
encounterText = xmlParse.parseXML(this);
}
但如果我尝试在我的应用程序中的单独java类文件中使用'this',我就会获得NPE。
由于
答案 0 :(得分:1)
'this'指的是该类的实例。它不是onCreate方法特有的东西
答案 1 :(得分:1)
每个类实例都有各自的'this'引用。 'this'实际上是指您在示例HelloAndroid实例中声明的类的实例。在您的示例中,您使用相同的类作为解析处理程序,这就是它工作的原因,在另一个类中,您可能已经定义了DefaultHandler。
答案 2 :(得分:1)
我认为你所问的(如果我错了,请纠正我)是为什么'this'不能作为需要引用Context的方法的参数。答案是,这只是指扩展Activity的类中的Context。您的活动恰好也是您的上下文,因此这适用于这些实例。但是,当你声明自己的类时,你不再在Activity中,所以'this'(虽然它显然指的是你所在的类)并没有帮助你获得对Context的引用。
在这些情况下,您需要将您的上下文作为对类构造函数的引用传递给它,以便它可以访问该对象。