2012-06-05 48 views
1

我已經檢查了幾次我的代碼,並嘗試了不同的「解決方案」,顯然他們都沒有工作。問題在於,點擊某個項目時,偵聽器不會被觸發。我發現,單擊某個項目時,這個出現在logcat中:微調OnItemSelected不工作

窗口已經集中,忽略了聚焦增益: [email protected]

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(); 
    } 
+0

哪裏在UI上添加country_list? –

+0

我從不在用戶界面上顯示我的Spinner。我只需要使用country_list.performClick()顯示的「選擇列表」。 –

+0

我會嘗試刪除匿名內部類(您的偵聽器設置),而不是讓你的類實現OnItemSelectedListener。然後把你的物品選定的邏輯放在重寫的方法中。只是一個猜測。 –

回答

1

我解決了使用AlertDialog.Builder而不是微調(這是正確的方式),如:

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

+2

這不是問題 – Sajmon

+0

的回答我認爲這是正確的答案,因爲這是一個正確的方法應該實現這樣一個彈出列表 - 而不是與微調。 –

+0

他要求爲'Spinner'解決這個問題,而不是'Dialog'。 – Sajmon

0

我剛剛經歷了這個,我有一個微調不起作用。問題在於它在一個實現了AdapterView.OnItemSelectedListener的片段中,問題是它在活動中也實現了AdapterView.OnItemSelectedListener,問題是活動總是捕獲事件,所以我必須將我的邏輯放入片段,並讓該活動調用片段方法。如果你的onItemSelected從來沒有被調用,它可能是活動,或者其他偵聽器捕獲它,顯然Android只喜歡聽onItemSelected的一件事情。