-1

【解決済み】
わかりました、これは本当に奇妙です。エミュレーターでプログラムを実行しました。エミュレーターを起動して Run as -> Android アプリケーションを使用すると、すべて正常に動作します。

Run as -> Android application でプログラムを直接起動しようとすると、エミュレーターが起動し、sdcard.img で XML ファイルが見つかりません。これが、XML パーサーがこれにつながるオブジェクトを作成しないでください。多分バグ?エミュレーターは常に同じ SD カード イメージを開始します。

極端に異なる可能性がある XML ファイルを解析しています。そこで、XML ファイルの内容に応じてボタンなどを追加できる RelativeView を作成しようとしました。

だから私は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にオブジェクトが1つしか含まれていない場合、これは機能します。これはばかげているように聞こえるかもしれませんが、私が意図したように簡単に行う方法はありますか、それとも新しいファイルで multiple-button-layout.xml を作成し、そこにすべてを貼り付けて、たとえば BufferedOutputStream を使用してすべてを保存する必要がありますかその中のボタン0..nなどを膨らませますか?

4

2 に答える 2

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++;
}
于 2013-03-20T21:28:30.253 に答える
0

単純なバグがあります。ループint i = 0;の外に移動します。for()

于 2013-03-20T21:28:13.803 に答える