Модераторы: javastic
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Создание события OnClickListener 
:(
    Опции темы
Abbath1349
Дата 7.9.2011, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 214
Регистрация: 16.6.2010

Репутация: нет
Всего: нет



Скажите почему в данном коде он ругается на  button1_click  и button2_click 
Код

package com.samples.button;

import android.app.Activity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.TextView;
import android.view.View;
import android.view.View.OnClickListener;

public class ButtonActivity extends Activity {
   private TextView mText;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        mText=(TextView)findViewById(R.id.text);
        final Button button1=(Button)findViewById(R.id.button1);
  
        final Button button2=(Button)findViewById(R.id.button2);
        
        button1.setOnClickListener(button1_click);
        button2.setOnClickListener(button2_click);

        public OnClickListener button1_click =new View.OnClickListener() {
            
            @Override
            public void onClick(View v) {
                mText.setText("Click on button01");
                
            }
        };
                
         public OnClickListener button2_click =new OnClickListener() {
                
                @Override
                public void onClick(View v) {
                    mText.setText("Click on button02");
                    
                }
            };
        
    }
}

PM MAIL   Вверх
Frees
Дата 7.9.2011, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: нет
Всего: 54



объявление надо выше понять, угадал?


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
Abbath1349
Дата 7.9.2011, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 214
Регистрация: 16.6.2010

Репутация: нет
Всего: нет



Цитата(Frees @ 7.9.2011,  18:56)
объявление надо выше понять, угадал?

Всмысле? выше разместить событития? не помогает
PM MAIL   Вверх
Frees
Дата 7.9.2011, 19:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: нет
Всего: 54



всмысле, ты сперва объяви объект а потом используй..

Это сообщение отредактировал(а) Frees - 7.9.2011, 19:42


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
Abbath1349
Дата 7.9.2011, 20:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 214
Регистрация: 16.6.2010

Репутация: нет
Всего: нет



Цитата(Frees @ 7.9.2011,  19:35)
всмысле, ты сперва объяви объект а потом используй..

а что именно то объявлять и где? у меня в этой строчке  public OnClickListener button1_click =new View.OnClickListener() он button1_click  красным подчеркивает. Ошибка Illegal modifier for parameter button2_click; only final is permitted

Это сообщение отредактировал(а) Abbath1349 - 7.9.2011, 20:26
PM MAIL   Вверх
toxx
Дата 7.9.2011, 21:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 653
Регистрация: 4.3.2009
Где: НН

Репутация: нет
Всего: 13



Вродебы все пишет вам, если вы так хотите листенеры объявить, то нужно их сделать полями класса.Если по уму делать, то нужно отимплементироваться от view.onclicklistener
PM MAIL   Вверх
AbdulBcex
Дата 7.9.2011, 22:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 6.11.2009

Репутация: 1
Всего: 1



Illegal modifier - скорее всего потому, что невозможно локальную переменную как public объявить. Вероятно именно в модификаторах причина и основной ошибки.

Я, конечно, не настаиваю, но мне одному такое объявление слушателей показалось странным? Чем не нравится вариант более, на мой взгляд, общепринятый:
Код

Button b = new Button();
b.setOnClickListener(new OnClickListener(){
@Override
      public void onClick(View v) {
            mText.setText("Click on button02");                    
       }
});


Также хорошая практика - пусть ваша Активити реализует интерфейс OnClickListener, а внутри метода OnClick будете по view.id() определять кнопку и выполнять действие.


Это сообщение отредактировал(а) AbdulBcex - 7.9.2011, 22:36
PM MAIL   Вверх
PiyodaiSiyo
Дата 7.9.2011, 23:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 112
Регистрация: 31.12.2009

Репутация: 1
Всего: 2



да там вернее всего батоны в R классе объявлены как финальные (постоянные числа), а нужны переменные.Просто убрать вручную финалы и числа со знаком равенства.

Добавлено через 2 минуты и 48 секунд
А то чего он спрашивает онли финальные

PM MAIL   Вверх
ivanovpv
Дата 8.9.2011, 08:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Варвар
**


Профиль
Группа: Участник
Сообщений: 639
Регистрация: 26.1.2005
Где: Москва

Репутация: 9
Всего: 28



Правильно ругается, потому что сначала вы объявляете кнопку немодифицируемой (final) и тут же строчкой ниже пытаетесь модифицировать его - устанавливая ему новый листенер.

Код

Button button2=(Button)findViewById(R.id.button1); //надо убрать модификатор final и все заработает
button1.setOnClickListener(button1_click);



--------------------
Aut viam inveniam aut faciam
PM MAIL Skype   Вверх
Abbath1349
Дата 8.9.2011, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 214
Регистрация: 16.6.2010

Репутация: нет
Всего: нет



Вообщем как я понял надо Button1_click и Button2_click объявить в классе R.java. Подскажите как это сделать я после того как пропишу их и нажму сохранить они удаляются. Я новичек просто в этом ещо.
PM MAIL   Вверх
toxx
Дата 8.9.2011, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 653
Регистрация: 4.3.2009
Где: НН

Репутация: нет
Всего: 13



Abbath1349
ясное дело удаляться, там вверху файла написано что он сам генерится.
Что вы никак не сделаете? я и AbdulBcex уже сказали что нужно сделать, что сложного?
PM MAIL   Вверх
Abbath1349
Дата 8.9.2011, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 214
Регистрация: 16.6.2010

Репутация: нет
Всего: нет



ну вариант AbdulBcex  я делал до этого просто в книжке Голощапова следующий пример вот таким образом для удобства представления кода.
PM MAIL   Вверх
ivanovpv
Дата 9.9.2011, 08:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Варвар
**


Профиль
Группа: Участник
Сообщений: 639
Регистрация: 26.1.2005
Где: Москва

Репутация: 9
Всего: 28



Цитата(Abbath1349 @  8.9.2011,  17:29 Найти цитируемый пост)
Вообщем как я понял надо Button1_click и Button2_click объявить в классе R.java. Подскажите как это сделать я после того как пропишу их и нажму сохранить они удаляются. Я новичек просто в этом ещо. 


R.java - нельзя модифицировать - он генерируется автоматом!  smile Прочитайте выше комментарии - ясно же написано что надо сделать!


--------------------
Aut viam inveniam aut faciam
PM MAIL Skype   Вверх
spyswamp
Дата 9.9.2011, 17:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 349
Регистрация: 18.8.2006

Репутация: 4
Всего: 7



ПАЦАНЫ, Я СЕГОДНЯ ШЁЛ КОРОЧЕ ПО РЫНКУ И УВИДЕЛ МУДАКА В МАЙКЕ "ГОЛОЩАПОВ", НУ Я ПОДСКОЧИЛ И РЕЗКО ПЕРЕЕБАЛ ЕМУ В ЩЩИ С ВЕРТУШКИ И ПОЯСНИЛ ЕГО КРИКОМ "НЕ ЛЮБЛЮ КРИВОРУКИХ", ПОТОМУ ЧТО Я УГОРЕЛ ПО developer.android.com, ПАЦАНЫ ДУХ СТАРОЙ ШКОЛЫ ЖИВЁТ ТОЛЬКО В ОРИГИНАЛЬНЫХ ДОКАХ, ГДЕ КОДЯТ ПО ХАРДКОРУ, ГДЕ ПАЦАНЫ ЖИВУТ ЭНЕРГИЕЙ, МОЛОДОСТЬЮ И ЕБУТ ГОЛОЩАПОВЫХ В РОТ! ТОЛЬКО СТАНДАРТ developer.android.com, ТОЛЬКО ХАРДКОР!!! ЮНИТИ УЛЬТРАХАРДКОР ДОКИ РАЗРАБОТЧИКОВ!!! пацаны ебашьте мудаков, Голощаповых, криворуких, угорайте на гугле, любите свою программу, смартфон и Гугл! ГОВОРИТЕ ОТКРЫТО И СМЕЛО ПРЯМО В ЛИЦО! developer.android.com!


--------------------
- why you call it beta?
- cuz it's betta then nothin'
PM MAIL   Вверх
Abbath1349
Дата 9.9.2011, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 214
Регистрация: 16.6.2010

Репутация: нет
Всего: нет



Вообщем разобрался я с этим там с проектом какой то глюк видать был создал по новому чуть поменял заработало )))
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Android | Следующая тема »


 




[ Время генерации скрипта: 0.0525 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.