如何解决Android:将.xml资源添加到数组中
| 更新: 因此,我尝试了AssetManager方法,并最终得到了以下结果:...
...
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
factory.setNamespaceAware(true);
XmlPullParser xrp = factory.newPullParser();
AssetManager assmgr = context.getAssets();
xrp.setInput(assmgr.open(\"levels/level_1.xml\"),null);
//Object attributes
String type = null;
int x = 0;
int y = 0;
double angleRads = 0;
int eventType = xrp.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
if (eventType == XmlPullParser.START_DOCUMENT) {
} else if (eventType == XmlPullParser.START_TAG) {
if (xrp.getName().equals(\"Position\")) {
while (!xrp.getName().equals(\"X\")) { <----NULLPOINTER EXCEPTION HERE
eventType = xrp.next();
}
...
...
现在,当xrp是XmlResourceParser时,此代码曾经可以正常工作,但是现在我收到此错误消息:
06-01 05:13:56.797: ERROR/AndroidRuntime(946): Caused by: java.lang.NullPointerException
06-01 05:13:56.797: ERROR/AndroidRuntime(946): at com.stickfigs.blockball.BlockBallView$BlockBallThread.initLevel(BlockBallView.java:342)
我不明白为什么这行不通了,我在上面的代码中用箭头标记了发生空指针异常的行。
=== vvvOLDvvv ===
在我的res / xml /文件夹中,有一堆名为level _#。xml的文件(例如:level_1.xml,level_2.xml,level_21.xml),并且有一个微调器小部件,我想使用所有ID名称填充此文件夹中遵循命名约定level _#。xml的.xml文件中的。
我想我想出了如何设置小部件:
Spinner lsSpinner = (Spinner) findViewById(R.id.levelselect_spinner);
String levels[] = {\"level_1\",\"level_2\",\"level_55\"};
ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,levels);
spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
lsSpinner.setAdapter(spinnerArrayAdapter);
现在,我只需要像之前解释的那样动态生成level []即可...
我该怎么做呢?
解决方法
看看AssetManager:http://developer.android.com/reference/android/content/res/AssetManager.html#list(java.lang.String)
然后您可以新建一个文件和getName()
链接:http://developer.android.com/reference/java/io/File.html#getName()
希望这可以帮助。
, 直接的答案是
String[] levels = new String[LEVELS];
for (int i=0; i< LEVELS; i++) {
int j = i+1;
levels[i] = new String (\"level_\"+j);
}
但是我感觉那不是您想要的。
如果要引用每个level_XX.xml
的实际ID,则将需要手动进行操作,因为每个R.layout.levelXX
都是一个实际int
,并且无法确保它们的连续编号(即使您使用的名称是连续的) )。
, 既然已经解决了上一个问题,那么我认为最好创建另一个问题以让人们帮助您。但是为了方便起见,请允许我在这里回答您。
您如何看待xrp.getName()永远不会等于\“ X \”? xrp会跳到下一个直到为空吗?我建议您在此处做一个断点并检查一下。
顺便说一句,我看到您在android的xml中苦苦挣扎,我建议您使用一些ext库,它可以使生活更轻松。像这样:http://brainflush.wordpress.com/2009/05/19/the-force-unleashed-xmlxpath-on-android-using-dom4j-and-jaxen/
希望这会有所帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。