Пишу приложение в Android Studio. Хочу в одном классе реализовать два разных слушателя.
Вот часть моего кода:
MyFragment extends Fragment implements AdapterView.OnItemSelectedListener, View.OnClickListener {
//my fields
private Spinner mySpinner;
@Ovveride
public void onItemSelected(AdapterView<?> parent, View v, int pos, long id) {
//мой код
}
@Ovveride public void onNothingSelected(AdapterView<?>p){}
@Ovveride
public void onClick(View v) {
//мой код
}
@Ovveride
public void onCreate(Bundle b) {
super.onCreate(b);
//мой код
mySpinner = (Spinner) fragmentView.findViewById(R.id.my_spinner);
mySpinner.setOnItemSelectedListener(this);
На последней строке я получил ошибку:
'setOnItemSelectedListener(android.widget.AdapterView.OnItemSelectedListener)' in 'android.widget.AdapterView' cannot be applied to '(anonymous android.view.View.OnClickListener)'
Как исправить эту ошибку?
На enSO пишут, что так делать можно.
Если у вас myCheckBox это CheckBox то навесить action можно таким способом
myCheckBox.setOnCheckedChangeListener(new OnCheckedChangeListener()
{
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
{
if ( isChecked )
{
// perform logic
}
}
});
Интерфейс AdapterView.OnItemSelectedListener относится к spinner. Метод onItemSelected отрабатывает только на нажатие на пункт в spinner
Я лоханулся, у меня строчка mySpinner.setOnItemSelectedListener(this); находилась в локальном классе, о чем и написано в ошибке, поэтому надо было написать MyFragment.this.
Продвижение своими сайтами как стратегия роста и независимости