仅使用一个Button.xml实例化多个Button

时间:2013-03-20 21:21:50

标签: android android-layout

[解决]
好的,这真的很奇怪。我用我的模拟器运行程序,当我启动模拟器并使用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等在其中,然后膨胀它?

2 个答案:

答案 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()循环之外。