LINUX.ORG.RU

переменные в андроиде

 , ,


0

1

Дан быдлокод:

http://pastebin.com/cwkrAJPf

на строке с
public void onClick(View v) {
ругается
'onclick(View)' is already defined in '***.MainACtivity'

поясните чайнику, почему нельзя два раза употреблять такую конструкцию и чем заменить оную?
цель: добавить вторую кнопку для перехода на 3 Aсtivity.

почему нельзя два раза употреблять такую конструкцию

Потому что в классе может быть один метод с названием onClick. И как умный компилятор должен догадываться, какой кнопочке соответствует какой onClick?

sholom
()

чем заменить

Поставьте строки 44-47 после строки 35. Дублирующий метод удалите. У вас есть switch, в нём и определяйте на какой кнопке произошло событие. По id, как сейчас, в принципе, и есть.

Weres ★★★
()

'onclick(View)' is already defined in '***.MainACtivity'

Учимся читать с экрана... Он же тебе пишет «already defined».

29    @Override
30    public void onClick(View v) {

...

41    @Override
42    public void onClick(View v) {

invy ★★★★★
()
Ответ на: комментарий от Weres

Удваиваю маслоножку, есть ещё плагин, который сам генерирует эти inject и OnClick.

Jefail ★★★★
()
Ответ на: комментарий от darkenshvein

Ну и жесть, за два дня не смог нагуглить «java switch». Убери свои ручонки от проекта, из-за таких, как ты, потом дыры везде. Зачем ты вообще пытаешься писать, если не понимаешь, что происходит? Иди в проджект-менеджеры или маркетоиды, там тебе понравится.

cdshines ★★★★★
()
Ответ на: комментарий от darkenshvein

Ну так вам же написали. Один onClick, один switch, три ветки.

 @Override
    public void onClick(View v) {
        Intent intent;
        switch (v.getId()) {
            case R.id.btnActOne:
                intent = new Intent(this, ActivityOne.class);
                break;
            case R.id.btnActTwo:
                intent = new Intent(this, ActivityTwo.class);
                break;
            case R.id.btnActThree:
                intent = new Intent(this, ActivityThree.class);
                break; 
        }
        startActivity(intent);
    }
Написал прямо в окошке ответа, могу опечататься, но это должно работать.

Weres ★★★
()

Если есть ресурс xml для активити, то лучше запедалировать аттрибутом android:onClick=имяМетода, где твой метод будет принимать View аргументом. Это для того, если логика сильно разнится на разных кнопках, чтобы не городить switch.

spoilt ★★★
()

УЖАС, за btnActTwo, btnActThree, ActivityTwo, Main3Activity надо пальцы на руках ломать и гнать их профессии.

peregrine ★★★★★
()
Ответ на: комментарий от darkenshvein

Гугл твой второй друг в разработке, первый друг - голова.

peregrine ★★★★★
()
Ответ на: комментарий от Weres

Новый Data Binding удобнее, кроме обработки событий.

anonymous
()
Ответ на: комментарий от darkenshvein

Потому что код пишется для людей, а не компьютера.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.