1

私は自分のコードを何度か見直し、さまざまな「解決策」を試しましたが、明らかにどれも機能しませんでした。問題は、アイテムがクリックされたときにリスナーが起動されないことです。アイテムをクリックすると、Logcat に次のように表示されることがわかりました。

ウィンドウは既にフォーカスされており、com.android.internal.view.IInputMethodClient$Stub$Proxy@40683498 のフォーカス獲得を無視しています

Spinner は、Button によって起動される関数で動的に作成されます。

コード :

public void showFilterCountries(View v){

     Spinner country_list=new Spinner(this);

     ArrayAdapter<String> adapter= new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, countries);
     adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
     country_list.setAdapter(adapter);
     country_list.setPrompt("Select a country");

     country_list.setOnItemSelectedListener(new OnItemSelectedListener() {
            public void onItemSelected(AdapterView<?> arg0, View arg1,
                    int pos, long arg3) {
                Log.d("","selected");                   
            }

            public void onNothingSelected(AdapterView<?> arg0) {
                Log.d("","none selected");
            }
        });

     country_list.performClick();
    }
4

2 に答える 2

1

次のように、Spinnerの代わりにAlertDialog.Builderを使用して解決しました(これは正しい方法です)。

https://stackoverflow.com/a/7635966/1181261

于 2012-06-05T17:02:50.093 に答える
0

私はちょうどこれを経験しました、私が持っていたスピナーの1つが機能しませんでした. 問題は、AdapterView.OnItemSelectedListener を実装するフラグメントにあることです。問題は、AdapterView.OnItemSelectedListener も実装するアクティビティにあることです。問題は、アクティビティが常にイベントをキャッチすることです。そのため、ロジックをフラグメント化して、アクティビティにフラグメント メソッドを呼び出させます。

TL:DR、あなたの onItemSelected が呼び出されない場合、それはアクティビティであるか、別のリスナーがそれをキャッチしている可能性があります。明らかに、Android は onItemSelected をリッスンすることだけを好みます。

于 2014-11-20T18:57:03.487 に答える