web-dev-qa-db-ja.com

スピナーのOnItemClickListener

この方法でSpinnerをアクションバーに入れることができます。 re/values /languages.xml内のアイテムの配列

 <string-array name="languages">
    <item>Finnish</item>
    <item>French</item>
    <item>German</item>
    <item>Slovakian</item>
    <item>Polish</item>
</string-array>

Res/menu /main.xml内

  <item
    Android:id="@+id/menuSort"
    Android:actionLayout="@layout/spinner"
    Android:showAsAction="ifRoom"
    Android:title="@string/choose"/>

Res/layout /spinner.xml内

<Spinner
    Android:id="@+id/spinner"
    Android:layout_width="150dp"
    Android:layout_height="wrap_content" 
    Android:entries="@array/languages"/>

そして最後にアクティビティクラス。

 public class Base_Activity extends Activity {

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.main, menu);
    final Spinner spinner = new Spinner(this);
    Log.i("DEBUG1", "CHECKPOINT1");
    ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(
            this, Android.R.layout.simple_spinner_dropdown_item);
    spinner.setAdapter(spinnerArrayAdapter);
    Log.i("DEBUG2", "CHECKPOINT2");
    spinnerArrayAdapter.setDropDownViewResource(0);
    spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> arg0, View arg1,
                int arg2, long arg3) {

               String items=spinner.getSelectedItem().toString();
               Log.i("Selected item : ",items);
        }

        @Override
        public void onNothingSelected(AdapterView<?> arg0) {
            // TODO Auto-generated method stub

        }

    });
    return true;
}

}

私が得ていないのは、スピナーアイテムのItemSelectedでは何も起こりません。私のxmlファイルからわかるように、スピナーを取得するためにアダプターさえ必要ありません。しかし、私はアダプターを使用して、OnItemSelectedを取得します。ここで何が起こったのか教えてください。

7
bShah

これを試してみてください

@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);
        final Spinner spinner = (Spinner) menu.getItem(0).getActionView().findViewById(R.id.spinner);
        spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

            @Override
            public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) {

                String items = spinner.getSelectedItem().toString();
                Log.i("Selected item : ", items);
            }

            @Override
            public void onNothingSelected(AdapterView<?> arg0) {

            }

        });
        return super.onCreateOptionsMenu(menu);
    }
18
Biraj Zalavadia