更新:
所以我尝试了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)
我不明白为什么这不再起作用了,我用箭头标记了上面代码中发生nullpointerexception的行。
=== vvvOLDvvv ===
在我的res / xml /文件夹中,我有一堆名为level _#。xml的文件(例如:level_1.xml,level_2.xml,level_21.xml),我有一个微调器小部件,我想用id填充此文件夹中所有.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 []就像我之前解释过的那样......
我该怎么做?
答案 0 :(得分:1)
直截了当的答案是
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
,并且没有可能的方法确保连续编号(即使你使用的名称是连续的)。
答案 1 :(得分:1)
由于上一个问题已经解决,我认为最好再创建一个让人们帮助你的问题。但是,为方便起见,请允许我在这里回答你。
如果xrp.getName()永远不会等于“X”,你怎么看? xrp会一直转到null吗?我建议你在这里做一个断点并检查一下。
顺便说一句,我看到你在android中的xml中苦苦挣扎,我建议你使用一些可以让生活更轻松的ext库。像这样:http://brainflush.wordpress.com/2009/05/19/the-force-unleashed-xmlxpath-on-android-using-dom4j-and-jaxen/
希望这可能会有所帮助。
答案 2 :(得分:0)
查看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()
希望这有帮助。