0

各行に 3 つのフィールドを持つ tablelayout があります。

1 番目と 2 番目はテキストで、正常に動作しますが、3 番目はスピナーであり、保持された値を回復しようとするまで正常に動作します。

テーブルから情報を読み取るための次のコードがあります。

 TableRow row = (TableRow) tableLayout.getChildAt(i);
 TextView a= (TextView) row.getChildAt(0);
 TextView b= (TextView) row.getChildAt(1);
 Log.d(LOGTAG, (String) a.getText());
 Spinner c= (Spinner) row.getChildAt(2);

Spinner ラインを使用しようとすると失敗します。私は多くの異なるコードを試しましたが、最後の行は常に失敗するため、実際には機能しません...

この方法でスピナーを作成します。

                    ArrayList<String> spinnerArray = new ArrayList<String>();
                    spinnerArray.add("0%");
                    spinnerArray.add("25%");
                    spinnerArray.add("50%");
                    spinnerArray.add("75%");
                    spinnerArray.add("100%");

                    Spinner spinner = new Spinner(home_screen.this);
                    ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(home_screen.this, android.R.layout.simple_spinner_dropdown_item, spinnerArray);


            spinner.setAdapter(spinnerArrayAdapter);

            row.addView(spinner);

最初の答えに答えると、これは出力です:

ERROR/AndroidRuntime(5404): FATAL EXCEPTION: main
    java.lang.NullPointerException: println needs a message
    at android.util.Log.println_native(Native Method)
    at android.util.Log.e(Log.java:231)
    at com.gps.distance.home_screen.guardar(home_screen.java:217)
    at com.gps.distance.home_screen.access$1000(home_screen.java:22)
    at com.gps.distance.home_screen$3.onClick(home_screen.java:188)
    at android.view.View.performClick(View.java:4204)
    at android.view.View$PerformClick.run(View.java:17355)
    at android.os.Handler.handleCallback(Handler.java:725)
    at android.os.Handler.dispatchMessage(Handler.java:92)
    at android.os.Looper.loop(Looper.java:137)
    at android.app.ActivityThread.main(ActivityThread.java:5041)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:511)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
    at dalvik.system.NativeStart.main(Native Method)
4

1 に答える 1

1

最初に、後で取得できるように、スピナーの一意の ID を持っていることを確認する必要があります (通常、これを xml でさらに定義することをお勧めしますが、何をしているのかわからないため、これはベスト プラクティスではありません)。 )

//add spinner
Spinner spinner = new Spinner(home_screen.this);
ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(home_screen.this, android.R.layout.simple_spinner_dropdown_item, spinnerArray);
spinner.setAdapter(spinnerArrayAdapter);
spinner.setId(android.R.id.list);
row.addView(spinner);

追加したばかりの行から後でそのスピナーを取得するには、次を使用します。

//to get spinner from table
TableRow row;
Spinner c = (Spinner) row.findViewById(android.R.id.list);
String percentage = (String) c.getSelectedItem();
于 2013-07-16T16:22:01.463 に答える