プログラムで開くスピナーがあります。ポップアップして正常に動作しているようですが、何らかの理由で自分のOnItemSelectedListenerがイベントをトリガーしません。プログラムで追加されたSpinnerのOnItemSelectedListenerがトリガーしません
public class BeerConverter extends Activity {
ArrayAdapter<CharSequence> adapter3;
Spinner spinner03;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
spinner03 = new Spinner(this);
adapter3 = new ArrayAdapter<CharSequence> (this, android.R.layout.simple_spinner_item);
adapter3.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner03.setAdapter(adapter3);
spinner03.setOnItemSelectedListener(new MyOnItemSelectedListener3());
adapter3.add("Stuff");
spinner03.performClick();
}
は、それから私は、入れ子になったクラスとしてリスナーを作成します。私はspinner03.performClick();
を送信するとき
public class MyOnItemSelectedListener3 implements OnItemSelectedListener {
public void onItemSelected(AdapterView<?> parentview, View v,int position, long id){
curPos = position;
Context context = getApplicationContext();
CharSequence text = "Test text. If you see this, it means MyOnItemSelectedListener3 was called.";
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
}
public void onNothingSelected(AdapterView<?> arg0)
{
//do nothing
}
};
だからスピナーが正しくポップアップしますが、スピナーのアイテムが選択された場合、それだけで閉じ、 OnItemSelectedListenerを呼び出すことはありません。 this person had the same problemのように見えますが、解決策を投稿するまでには至りませんでした。
スピナーはどのように表示されますか?このコードでは、メインレイアウトとは別にスピンナーを作成するだけです。 – Gregory
'spinner03.performClick();'を使うとスピナーが表示されます。これはうまく表示されますが、アイテムがクリックされたときにはリスナーは起動しません。私は、(うまくいけば)これをもっと明確にするために質問を編集しました。 – ajwest
私はSpinnerがグローバルレイアウトに追加されていないことが奇妙に感じられます。ポップアップが表示されますが、Spinnerビュー自体はレイアウトに「存在しません」。おそらく、リスナーが呼び出されないようにします。代りにリストを使ってダイアログを使うことを考えましたか? http://developer.android.com/guide/topics/ui/dialogs.html#AddingAList – Gregory