Я не могу создать прослушиватель onCheckedChanged для своей RadioGroup

Я пытаюсь создать прослушиватель onCheckedChanged для своей RadioGroup, но eclipse выдает мне ошибки. это код

rg = (RadioGroup) findViewById(R.id.radioGroup1);

rg.setOnCheckedChangeListener(new OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(RadioGroup group, int checkedId) {
        Log.d("chk", "id" + checkedId);

        if (checkedId == R.id.switchToFriends) {
            // some code
        } else if (checkedId == R.id.switchToUsers) {
            // some code
        }
    }
});

И из eclipse я получаю сообщение об ошибке на setOnCheckedChangeListener, предлагающее изменить его на setOnClickListener/setOnDragListener и другие.
На new OnCheckedChangeListener() он говорит мне добавить нереализованные методы, и когда я выбираю этот параметр, он добавляет это:

@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
    // TODO Auto-generated method stub

}

Итак, я заканчиваю это:

rg = (RadioGroup) findViewById(R.id.radioGroup1);

rg.setOnCheckedChangeListener(new OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(RadioGroup group, int checkedId) {
        Log.d("chk", "id" + checkedId);

        if (checkedId == R.id.switchToFriends) {
            // some code
        } else if (checkedId == R.id.switchToUsers) {
            // some code
        }
    }

    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        // TODO Auto-generated method stub

    }
});

И он говорит мне удалить аннотацию @Override из метода, который я написал.
Кто-нибудь знает, почему он не позволяет мне переопределить метод таким образом? Я проверил документы Android и метод, который он там показывает использует формат, который я пытаюсь переопределить


person akafortes    schedule 29.10.2013    source источник


Ответы (3)


Убедитесь, что вы импортировали правильный пакет import android.widget.RadioGroup.OnCheckedChangeListener;, тогда @Override будет правильным

person Simon Mokhele    schedule 29.10.2013
comment
спасибо, я не знал, что есть разные импорты. Я просто скопировал код из некоторых сообщений, которые я нашел. - person akafortes; 29.10.2013
comment
У меня тоже была такая ошибка. Поэтому важно убедиться, что вы получили правильный импорт. Проверьте также Android API. - person Simon Mokhele; 29.10.2013

Вы можете напрямую добавить слушателя с ClassName

 radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(RadioGroup group, int checkedId) {
            // TODO Auto-generated method stub

        }
    });

Если, например, вы уже используете CompoundButton и связанный с ним OnCheckedChangeListener, вы не сможете импортировать класс RadioGroup, но по-прежнему сможете получить к нему прямой доступ с помощью этого решения.

person Jagadesh Seeram    schedule 29.10.2013

Я думаю, вы импортировали не тот пакет.

Вы должны импортировать android.widget.RadioGroup.OnCheckedChangeListener

вместо android.widget.CompoundButton.OnCheckedChangeListener

person Alexis C.    schedule 29.10.2013