0

これは非常に基本的な問題です。

それは、私は以下のようにリスナーで実装された基本的なスピナーを持っているということです:

Spinner sensModeSpinner = (Spinner) findViewById(R.id.SensorModeSpinner);
ArrayAdapter<CharSequence> sensModeAdapter = ArrayAdapter.createFromResource(this, R.array.sensorMode_array, android.R.layout.simple_spinner_item);
sensModeAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
sensModeSpinner.setAdapter(sensModeAdapter);

sensModeSpinner.setOnItemSelectedListener(new OnItemSelectedListener() {

    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
        sMode = parent.getItemAtPosition(pos).toString();
    }

    @Override
    public void onNothingSelected(AdapterView<?> parent) {
        Toast.makeText(getBaseContext(), "You need to select atleast one mode!", Toast.LENGTH_SHORT).show();
    }
});


Toast.makeText(getBaseContext(), "sensorMode = " + sMode, Toast.LENGTH_SHORT).show();

問題は、メソッドsMode内で正常に動作するため、変数結果がトースト メッセージ (値が NULL) に表示されないことです。OnItemSelected

どこが間違っていますか?

4

3 に答える 3

0

sMode 値を設定する前にメソッドを実行していますToast.show();。代わりに、onItemSelected()sMode 値を設定した後にこれを配置し、コードを次のように変更します。

Spinner sensModeSpinner = (Spinner) findViewById(R.id.SensorModeSpinner);
    ArrayAdapter<CharSequence> sensModeAdapter = ArrayAdapter.createFromResource(this, R.array.sensorMode_array,
                    android.R.layout.simple_spinner_item);
    sensModeAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    sensModeSpinner.setAdapter(sensModeAdapter);

    sensModeSpinner.setOnItemSelectedListener(new OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> parent,
                View view, int pos, long id) {
            sMode = parent.getItemAtPosition(pos).toString();
            Toast.makeText(getBaseContext(), "sensorMode = " + sMode, Toast.LENGTH_SHORT).show();

        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {
            Toast.makeText(getBaseContext(),
                    "You need to select atleast one mode!",
                    Toast.LENGTH_SHORT).show();
        }
    });
于 2012-10-23T08:56:22.757 に答える
0

ばかげた間違いかもしれないので、これを試してください..

@Override
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {

   // sMode = parent.getItemAtPosition(pos).toString();

     sMode = parent.getAdapter().getItemAtPosition(pos).toString();

}
于 2012-10-23T09:35:34.460 に答える
0

あなたはこれを行うことができます

    Spinner sensModeSpinner = (Spinner) findViewById(R.id.SensorModeSpinner);
ArrayAdapter<CharSequence> sensModeAdapter = ArrayAdapter.createFromResource(this, R.array.sensorMode_array, android.R.layout.simple_spinner_item);
sensModeAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
sensModeSpinner.setAdapter(sensModeAdapter);

sensModeSpinner.setOnItemSelectedListener(new OnItemSelectedListener() {

    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
        sMode = parent.getItemAtPosition(pos).toString();
        //CALL_YOUR_FUNCTION_HERE
    }

    @Override
    public void onNothingSelected(AdapterView<?> parent) {
        Toast.makeText(getBaseContext(), "You need to select atleast one mode!", Toast.LENGTH_SHORT).show();
    }
});
于 2012-10-23T09:06:23.500 に答える