0

main.xml にスピナーを作成しました。

<Spinner
        android:id="@+id/spinner1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:entries="@array/categoria_arrays"
        android:prompt="@string/categoria_prompt" />

そして、strings.xml の値:

<string name="categoria_prompt">Choose</string>
   <string-array name="categoria_arrays">
        <item>All</item>
        <item>One</item>
        <item>Two</item>
        <item>Three</item>
    </string-array>

私はそれを正常に表示できますが、実際には相互作用はありません..たとえば、アイテムをonClickして新しいアクティビティを開く必要があります。したがって、位置 2 のアイテムをクリックすると、アクティビティに入る必要がありますOne。出来ますか?

アイテムをクリックしたときにトーストを作成しようとしましたが、機能しません:

public void onItemSelected(AdapterView<?> parent, View view, int pos,long id) {
        Toast.makeText(parent.getContext(), 
            "OnItemSelectedListener : " + 
                                   parent.getItemAtPosition(pos).toString(),
            Toast.LENGTH_SHORT).show();
      //HERE CHANGE ACTIVITY
      }

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

どうすればいいですか?

4

5 に答える 5

1

次のように項目選択リスナーを設定する必要があります。

spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
        // your code here
    }

    @Override
    public void onNothingSelected(AdapterView<?> parentView) {
        // your code here
    }

});
于 2014-02-18T16:23:58.667 に答える
1

setContentView の後に onCreate で次のように呼び出すだけです。

Spinner spinner = (Spinner) findViewById(R.id.spinner1);
spinner.setOnItemSelectedListener(new OnItemSelectedListener(){

            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int pos,long id) {
                Toast.makeText(parent.getContext(), "OnItemSelectedListener : " + parent.getItemAtPosition(pos).toString(),
                Toast.LENGTH_SHORT).show();
                //HERE CHANGE ACTIVITY

            }

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

});
于 2014-02-18T16:24:03.267 に答える
1

はい、可能です。このようにしてください

public void onItemSelected(AdapterView<?> parent, View view, int pos,long id) {
        if (pos == 1){
                Intent i = new Intent(currentActivity.this, One.class);
                startActivity(i);

        }else if (pos == 2)
        {
                Intent i = new Intent(currentActivity.this, Two.class);
                startActivity(i);

        }else if (pos == 3){
                Intent i = new Intent(currentActivity.this, Three.class);
                startActivity(i);
      }
      }

等々...

于 2014-02-18T16:23:17.800 に答える
0

onItemSelected メソッドを追加したか、onItemSelectListener を設定しましたか? onItemSelected と onNothingSelected は単なるメソッドです。onItemSelectListener を使用する必要があります。

于 2014-02-18T16:25:05.393 に答える
0

スピナーのリスナーを明示的に設定する必要があります。

spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
    public void onItemSelected(AdapterView<?> arg0, View arg1,
        // your code here
    }
    public void onNothingSelected(AdapterView<?> arg0) {
        // your code here
    }
}); 
于 2014-02-18T16:22:45.660 に答える