2016-09-24 214 views
0

我是新的Android開發,我有一些問題,無法解決。 我試圖執行一個微調內部片段,現在它具有與所述spinner.setOnItemClickListener問題()方法,錯誤與spinner.setOnItemClickListener()裏面片段

它示出的錯誤消息:

「setOnItemClickListener (機器人.widget.AdapterView.OnItemClickListener)在Spinner中不能被 應用於(匿名 android.widget.AdapterView.OnItemSelectedListener)

這裏是我的代碼:

public class CheckAvailabilityFragment extends Fragment { 
    Spinner spinner; 
    ArrayAdapter<CharSequence> adapter; 

    @Override 
    public View onCreateView(LayoutInflater inflater, final ViewGroup container, 
         Bundle savedInstanceState) { 
    final View rootView = inflater.inflate(R.layout.fragment_check_availability, container,false); 
    spinner = (Spinner)getView().findViewById(R.id.spinner); 
    adapter = ArrayAdapter.createFromResource(getActivity().getBaseContext(),R.array.venue,android.R.layout.simple_list_item_1); 
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    spinner.setAdapter(adapter); 

    spinner.setOnItemClickListener(new AdapterView.OnItemSelectedListener() { 
     @Override 
     public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
      Toast.makeText(getBaseContext(), parent.getItemAtPosition(position) + " selected", Toast.LENGTH_SHORT).show(); 
     } 

     @Override 
     public void onNothingSelected(AdapterView<?> parent) { 

     } 
    }); 
    return rootView; 
    } 
} 
+0

標題和問題不匹配。你真的在問哪個錯誤? –

+0

@ Code-Apprentice標題被編輯了,謝謝提醒!是關於spinner.setOnItemListener – NewBie

回答

2

錯誤消息告訴你,setOnItemClickListener()需要OnItemClickListener類型的參數。但是,您正在給它一個OnItemSelectedListener。由於Spinner不支持OnItemClickListener,因此您可能需要致電onItemSelectedListener(),該參數以OnItemSelectedListener爲參數。

+0

您的解決方案爲我工作,感謝您幫助我! =) – NewBie

+0

@CZenLau請接受最有幫助的答案。您也可以投票任何有用的答案。 –

+0

完成。你的解決方案對我最有幫助 – NewBie

0

使用getActivity()代替getBaseContext()

+0

注意!謝謝! – NewBie

0

有你想要getBaseContext()理由嗎?你應該能夠只通過getActivity()createFromResource()

+0

我使用getBaseContext()的原因是因爲這對我來說是一個解決方案,我在其他帖子中提到了一個解決方案,但是我現在找不到帖子。 – NewBie

+0

但現在我使用getActivity而不是我原來的答案,它也可以工作!謝謝 – NewBie

1

setOnItemClickListener不會因爲被在Spinner SetOnItemClickListener表示,與微調作品的第一個參數:

噴絲不支持產品Click事件。調用此方法將 引發異常。使用 setOnItemSelectedListener(AdapterView.OnItemSelectedListener)。

嘗試使用以下:

spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
    @Override 
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
    Toast.makeText(getBaseContext(), parent.getItemAtPosition(position) + " selected", Toast.LENGTH_SHORT).show(); 
    } 

    @Override 
    public void onNothingSelected(AdapterView<?> parent) { 

    } 
}); 
+0

「setOnItemClickListener不能與微調器一起使用」,這是不正確的。微調有這種方法或OP會得到一個完全不同的錯誤信息。 –

+0

我在[Spin​​ner OnItemClickListener](https://developer.android.com/reference/android/widget/Spinner.html#setOnItemClickListener(android.widget.AdapterView.OnItemClickListener))上閱讀過它,它說'一個微調不支持項目點擊事件。調用這個方法會引發異常。或者我在這裏錯過了什麼? –

+1

你說得對。我錯過了。我仍然認爲更大的問題是OP沒有理解錯誤消息提示解決方案,因爲參數是錯誤的類型。 –