0

次のようにlayout.xmlに表示されるスピナーを含むJavaで記述されたAndroidアプリがあります。

<Spinner
    android:id="@+id/sprDeviceType"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" />

これは、アクティビティクラスで次のように初期化されます。

public class AddDevice extends Activity
{
    private Spinner deviceTypeSpinner;

    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.add);  //Set the layout

        populateDeviceTypeSpinner();
    }

    private void populateDeviceTypeSpinner()
    {
        String device_type_spinner[];

        device_type_spinner = new String[2];
        device_type_spinner[0] = "FTP";
        device_type_spinner[1] = "QAF";

        deviceTypeSpinner = (Spinner) findViewById(R.id.sprDeviceType);

        ArrayAdapter deviceTypeArrayAdapter = new ArrayAdapter(this, android.R.layout.simple_spinner_item, device_type_spinner);

        deviceTypeSpinner.setAdapter(deviceTypeArrayAdapter);
    }
}

ただし、プログラムを実行すると、アクティビティは正常に開きますが、スピナーをクリックしてドロップダウンアイテムを取得すると、プログラムがクラッシュし、NullPointerExceptionがスローされます。

誰かが私が間違っているのを見ますか?

LogCatは次のことを示しています。

08-14 14:57:02.034: D/AndroidRuntime(1612): >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<<
08-14 14:57:02.034: D/AndroidRuntime(1612): CheckJNI is OFF
08-14 14:57:02.074: D/AndroidRuntime(1612): --- registering native functions ---
08-14 14:57:05.004: D/AndroidRuntime(1612): Shutting down VM
08-14 14:57:05.014: I/AndroidRuntime(1612): NOTE: attach of thread 'Binder Thread #3' failed
08-14 14:57:05.184: D/AndroidRuntime(1637): >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<
08-14 14:57:05.184: D/AndroidRuntime(1637): CheckJNI is OFF
08-14 14:57:05.224: D/AndroidRuntime(1637): --- registering native functions ---
08-14 14:57:05.524: D/AndroidRuntime(1637): Shutting down VM
08-14 14:57:05.544: I/AndroidRuntime(1637): NOTE: attach of thread 'Binder Thread #3' failed
4

2 に答える 2

0

プログラムした配列の使用から、valuesxmlに保存された配列の使用に変更しました。

private void populateDeviceTypeSpinner()
{
    deviceTypeSpinner = (Spinner) findViewById(R.id.sprDeviceType);

    ArrayAdapter<CharSequence> deviceTypeArrayAdapter = ArrayAdapter.createFromResource(this, R.array.deviceType, android.R.layout.simple_spinner_item);

    deviceTypeArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

    deviceTypeSpinner.setAdapter(deviceTypeArrayAdapter);
}

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="deviceType">
        <item >FTP</item>
        <item >QAF</item>
    </string-array>
</resources>
于 2012-08-14T14:37:05.047 に答える
0

SpinnerAdapterの代わりに使用してくださいArrayAdapter

于 2012-08-14T14:22:15.670 に答える