【问题标题】:how to use getResources().getXml如何使用 getResources().getXml
【发布时间】:2011-12-20 17:04:36
【问题描述】:

我正在尝试使用 getResources().getXml 以便可以访问“res”文件夹中的 XML 文件。显然,从我读过的内容来看,我需要这样的东西:

XmlPullParser xpp = context.getResources().getXml(R.xml.encounters);

所以我把它放进去,我还导入了“android.content.Context”

但我不断收到关于“上下文”的错误消息:无法对非静态字段上下文进行静态引用

有没有办法解决这个问题?

这是我的全部代码:

package t.HelloAndroid;
import java.io.IOException;
import java.io.StringReader;

import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory;
import android.content.res.XmlResourceParser;
import android.content.Context;
import android.app.Activity;

public class XmlParser  {

public static void main (String args[])
    throws XmlPullParserException, IOException
{

    XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
    factory.setNamespaceAware(true);
    //XmlResourceParser xrp = context.getResources().getXml(R.xml.encounters);
    XmlPullParser xpp = context.getResources().getXml(R.xml.encounters);

    int eventType = xpp.getEventType();
    while (eventType != XmlPullParser.END_DOCUMENT) {
     if(eventType == XmlPullParser.START_DOCUMENT) {
         System.out.println("Start document");
     } else if(eventType == XmlPullParser.START_TAG) {
         System.out.println("Start tag "+xpp.getName());
     } else if(eventType == XmlPullParser.END_TAG) {
         System.out.println("End tag "+xpp.getName());
     } else if(eventType == XmlPullParser.TEXT) {
         System.out.println("Text "+xpp.getText());
     }
     eventType = xpp.next();
    }
    System.out.println("End document");
}
}

【问题讨论】:

  • 我有这个:public class XmlParser { private Context context; public static void main (String args[]) throws XmlPullParserException, IOException { XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); factory.setNamespaceAware(true); //XmlResourceParser xrp = context.getResources().getXml(R.xml.encounters); XmlPullParser xpp = context.getResources().getXml(R.xml.encounters);
  • 抱歉,格式看起来很糟糕
  • 您可以编辑原始帖子以将代码放入其中。
  • 好主意,我没想到

标签: android


【解决方案1】:

在上下文中使用您的活动名称。

【讨论】:

    【解决方案2】:

    您发布的代码将不起作用,因为 context 仅在 Android 应用内的 Activity(或类似)中可用。仅通过 main() 调用它不会为您设置正确的上下文(在上面的示例中,它甚至是 null 并会导致 NPE)。

    【讨论】:

      【解决方案3】:

      确保此语句位于非静态方法中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-04-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-18
        • 2011-10-16
        • 2016-03-18
        相关资源
        最近更新 更多