[解决] 的
好的,这真的很奇怪。我用我的模拟器运行程序,当我启动模拟器并使用Run as - > Android应用程序,一切正常。
如果我尝试,请直接使用Run as - >启动程序。 Android应用程序和模拟器启动,我的XML文件在sdcard.img上找不到,这就是我得到NullPointerException的原因,因为XML Parser没有创建导致这种情况的任何对象。也许是个bug?模拟器总是启动相同的SD卡图像。
我正在解析一个XML文件,它可能变化很大。所以我尝试创建一个RelativeView,我可以根据XML Files内容添加Buttons等。
所以我创建了一个button.xml
<?xml version="1.0" encoding="UTF-8"?>
<Button xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/button"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="10dp"
android:textSize="25sp" />
现在我尝试了类似的东西(我这里只使用伪代码):
int i = 0;
for(File file : fileArray){
Button b[i] = (Button)findViewById(R.layout.button);
b[i].setText(file.getTitel);
i++;
}
问题是,现在我得到一个NullPointerException!仅在第一个Button被实例化之后。当我的fileArray只包含一个Object时,它可以工作。这可能听起来很愚蠢,但有一种简单的方法可以像我想的那样去做,或者我必须创建一个带有新文件的多按钮layout.xml,粘贴其中的所有内容,例如使用BufferedOutputStream,保存alle按钮0..n等在其中,然后膨胀它?
答案 0 :(得分:1)
试试这个
int i = 0;
for(File file : fileArray){
Button b[i] = (Button) View.inflate(this, R.layout.button, null);
b[i].setText(file.getTitel);
i++;
}
答案 1 :(得分:0)
有一个简单的错误。
将int i = 0;
移到for()
循环之外。