2011-07-09 25 views
2

プログラムで開くスピナーがあります。ポップアップして正常に動作しているようですが、何らかの理由で自分の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のように見えますが、解決策を投稿するまでには至りませんでした。

+0

スピナーはどのように表示されますか?このコードでは、メインレイアウトとは別にスピンナーを作成するだけです。 – Gregory

+0

'spinner03.performClick();'を使うとスピナーが表示されます。これはうまく表示されますが、アイテムがクリックされたときにはリスナーは起動しません。私は、(うまくいけば)これをもっと明確にするために質問を編集しました。 – ajwest

+2

私はSpinnerがグローバルレイアウトに追加されていないことが奇妙に感じられます。ポップアップが表示されますが、Spinnerビュー自体はレイアウトに「存在しません」。おそらく、リスナーが呼び出されないようにします。代りにリストを使ってダイアログを使うことを考えましたか? http://developer.android.com/guide/topics/ui/dialogs.html#AddingAList – Gregory

答えて

2

上記のコメントスレッドが示唆しているように、Viewに関連するすべてのイベントではありませんが、問題のViewがウィンドウにアタッチされていない場合、期待通りに動作しません。アタッチされていないビューを使用して、あらゆる種類のユーザー操作を実行しないでください。

2

私は同じ問題がありました。私はスピナーの視認性を "Gone"に設定せずに修正しました。

関連する問題