获取我的应用程序的活动

时间:2012-01-03 17:50:55

标签: android

我在“res”文件夹中读取XML文件时遇到了一些问题,我认为我已将其缩小到我的应用活动的问题。

我在下面的第2行继续收到 NullPointerException

这是我获取活动的代码。有没有更好或更好的方法来做到这一点?

1. Activity activity = this;

2. Resources res = activity.getResources();

3. XmlResourceParser xpp = res.getXml(R.xml.encounters);

这是班级:

public class XmlParser extends Activity  {


public XmlParser()
    throws XmlPullParserException, IOException
{
    try {
        XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
        factory.setValidating(false);

        Activity activity = this;
        Resources res = activity.getResources();
        XmlResourceParser xpp = res.getXml(R.xml.encounters);

    } catch (Exception e) {
        String stackTrace = Log.getStackTraceString(e);
        Log.e("error", stackTrace);
    }
   }
}

我在“Resources res = activity.getResources();”上收到错误线... 谢谢!

2 个答案:

答案 0 :(得分:3)

有些东西告诉我thisactivity存在问题,但这里缺少一些代码。您放在那里的代码不应该生成NPE,因为this永远不会为空,如果2立即跟随1,activity不应该为空。 this可能不是Activity的实例,但会产生编译错误,而不是NPE。

编辑啊,我想我看到了你的问题。您需要覆盖onCreate(),此Activity将由Android框架实例化。然后,您需要从构造函数中移动所有代码并将其放在onCreate()方法中。但是,我认为这表明了对Android应用程序如何工作的基本理解。相反,我要做的是在Eclipse中创建一个标准的Android应用程序。这将为您创建一个基础活动。从那里,从Activity类中删除子类XmlParser并更改构造函数以获取Context参数。从那里,实例化您的另一个XmlParser中的Activity,这是由Eclipse创建的Activities

所有这些都说,我认为你应该花一些时间阅读开发人员文档中的应用程序基础知识,以了解你应该如何访问资源等。

修改2 有关{{1}}结帐this link的详细信息。另外,请查看this SO post for how to do what you're trying to do

答案 1 :(得分:1)

如果您在Activity类中运行该代码,那么您可以执行以下操作:

Resources res = this.getResources();

XmlResourceParser xpp = res.getXml(R.xml.encounters);