Урок 10. Оптимизируем реализацию обработчиков.

Обсуждение уроков
Аватара пользователя
Don77
Сообщения: 13
Зарегистрирован: 02 июл 2014, 00:21

Re: Урок 10. Оптимизируем реализацию обработчиков.

Сообщение Don77 » 02 июл 2014, 01:06

shyrick писал(а):Спасибо за разъяснение.
Попробую построить такую конструкцию но уже сейчас вижу что через Listener-ы код читабельные и понятнее получиться.
Может кто посоветует толковую книжку по жабе чтоб легче было понимать уроки данные. Желательно на русском для первичного ознакомления.
Попробуй вот этот проект - ссылка
Я с него начинал, лучше-всего теоретические знания подпитывать практическими заданиями, так материал лучше усваивается.Если есть проблемы с пониманием ООП, и в частности с пониманием языка, то уж лучше потратить несколько месяцев на изучение, чем после, писать невнятный код.Ну или на крайняк, можно взять какой-нибудь самоучитель, правда таковых именно по яве я не знаю.Несколько лет назад, начинал свой путь с Визуал бэйсика - Лукин С.Н. - Visual Basic 6.0 замечательный самоучитель, если в ЯП полный нуль :) Ну или можно самостоятельно по пройденному материалу придумывать задания, но по-моему - это извращение, не иначе.

betirsolt
Сообщения: 38
Зарегистрирован: 03 июл 2014, 23:45

Re: Урок 10. Оптимизируем реализацию обработчиков.

Сообщение betirsolt » 07 июл 2014, 01:35

разница между этим и предыдущим уроком в том что мы не создаем private OnClickListener oclBtn; так? или я что то не понимаю

YettyZzZone
Сообщения: 8
Зарегистрирован: 03 фев 2014, 15:40
Откуда: Izhevsk

Re: Урок 10. Оптимизируем реализацию обработчиков.

Сообщение YettyZzZone » 04 авг 2014, 13:22

Ребят, почему вылазит ошибка AndroidManifest.xml? Код вроде в порядке. Компилировалось на Android 4.4 KitKat, API19.
1.jpg
1.jpg (22.84 КБ) 14608 просмотров

Код: Выделить всё

package ru.startandroid.develop.p0102_activitylistener;

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

public class MainActivity extends Activity implements OnClickListener {
	TextView tvOut;
	Button btnOk;
	Button btnCancel;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
     TextView tvOut = (TextView)findViewById(R.id.tvOut);
     Button btnOk = (Button)findViewById(R.id.btnOk);
     Button btnCancel = (Button)findViewById(R.id.btnCancel);
    }
	@Override
	public void onClick(View arg0) {
		// TODO Auto-generated method stub
		switch (arg0.getId()) {
		case R.id.btnOk:
			tvOut.setText("Нажата кнопка Ok");
			break;
		case R.id.btnCancel:
			tvOut.setText("Нажата кнопка Cancel");
			break;
		}
		btnOk.setOnClickListener(this);
		btnCancel.setOnClickListener(this);
	}
}
В main.xml все как на сайте.

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 10. Оптимизируем реализацию обработчиков.

Сообщение Foenix » 04 авг 2014, 13:29

код тут причем? манифеста, пишет, нету.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

YettyZzZone
Сообщения: 8
Зарегистрирован: 03 фев 2014, 15:40
Откуда: Izhevsk

Re: Урок 10. Оптимизируем реализацию обработчиков.

Сообщение YettyZzZone » 04 авг 2014, 13:34

Foenix писал(а):код тут причем? манифеста, пишет, нету.
В том то и дело, что манифест на месте. С каким-то из уроков такое же было, на форумах прочитал что можно попробовать заново программу написать. В тот раз помогло, в этот нет. :( Что можно сделать и из-за чего возможна такая ошибка?

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 10. Оптимизируем реализацию обработчиков.

Сообщение Foenix » 04 авг 2014, 13:37

куча вариантов решения из первой ссылки гугла
http://stackoverflow.com/questions/1252 ... is-missing
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198


Qurubo
Сообщения: 7
Зарегистрирован: 10 фев 2014, 18:32
Откуда: Брест

Re: Урок 10. Оптимизируем реализацию обработчиков.

Сообщение Qurubo » 28 авг 2014, 13:54

Помогите пожалуйста в Android Studio не работает обработчик OnClickListener
Вложения
Снимок экрана (30).png
Снимок экрана (30).png (188.49 КБ) 14554 просмотра
Снимок экрана (29).png
Снимок экрана (29).png (175.12 КБ) 14554 просмотра

Donart
Сообщения: 114
Зарегистрирован: 06 ноя 2013, 08:59

Re: Урок 10. Оптимизируем реализацию обработчиков.

Сообщение Donart » 28 авг 2014, 14:43

Помогите пожалуйста в Android Studio не работает обработчик OnClickListener
Не тот импорт

Qurubo
Сообщения: 7
Зарегистрирован: 10 фев 2014, 18:32
Откуда: Брест

Re: Урок 10. Оптимизируем реализацию обработчиков.

Сообщение Qurubo » 28 авг 2014, 16:56

Donart писал(а): Не тот импорт
У меня только был один импорт dialoginterface.onclicklistener


VKostikov
Сообщения: 4
Зарегистрирован: 28 авг 2014, 11:56

Re: Урок 10. Оптимизируем реализацию обработчиков.

Сообщение VKostikov » 28 авг 2014, 17:40

Мой первопост. В качестве хобби решил посмотреть что и как у нас в части программирования под Андройд.
Гайд на этом ресурсе отличный.

Собственно, вопрос по теме урока:
1. для обработки клика MainActivity имплементит OnClickListener
2. в xml указываем android:onClick=...

Какой из подходов "трушнее"
Что поимеем на выходе: в результате компиляции не получим ли мы одно и то же т.е. п.2 сведется к п.1 (на основе xml сгенерится имплементация интерфейса)

Qurubo
Сообщения: 7
Зарегистрирован: 10 фев 2014, 18:32
Откуда: Брест

Re: Урок 10. Оптимизируем реализацию обработчиков.

Сообщение Qurubo » 28 авг 2014, 17:49

Mikhail_dev писал(а):Надо View.OnClickListener
Но его нету! Что делать ?

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: Урок 10. Оптимизируем реализацию обработчиков.

Сообщение Mikhail_dev » 28 авг 2014, 18:54

Но его нету! Что делать ?
Есть. Вот он
http://developer.android.com/reference/ ... tener.html
Если у вас не выводит его автоматом, это еще не означает что его нет. Ручками напишите его полный путь.
Собственно, вопрос по теме урока:
1. для обработки клика MainActivity имплементит OnClickListener
2. в xml указываем android:onClick=...
Используйте OnClickListener , ибо не надо смешивать обработчики и представление. XML для представления и хватит с него.

duddeniska
Сообщения: 7
Зарегистрирован: 03 сен 2014, 11:51

Re: Урок 10. Оптимизируем реализацию обработчиков.

Сообщение duddeniska » 10 сен 2014, 20:28

Всем привет ! По уроку вопросов как таковых нету. Единственный вопрос про второй метод. В строке public class MainActivity extends ActionBarActivity implements OnClickListener что такое implements OnClickListener

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: Урок 10. Оптимизируем реализацию обработчиков.

Сообщение Mikhail_dev » 10 сен 2014, 21:43

это интерфейс, а implements показывает, что данный класс реализует данный интерфейс

Аватара пользователя
Millik
Сообщения: 7
Зарегистрирован: 18 ноя 2014, 16:54

Re: Урок 10. Оптимизируем реализацию обработчиков.

Сообщение Millik » 18 ноя 2014, 17:08

Вариант создания слушателя прямо в методе onCreate(), мне кажется, ухудшает читабельность кода.
Если уж и реализовывать этот интерфейс, то через отдельный внутренний класс:
[syntax=java]
protected void onCreate(Bundle savedInstanceState) {
//.........
btnCancel.setOnClickListener(new btnClicked ());

}

class btnClicked implements OnClickListener{
@Override
public void onClick(View v) {
//something to do
}
}
[/syntax]

Аватара пользователя
KamiSempai
Сообщения: 1339
Зарегистрирован: 17 фев 2012, 21:23
Откуда: Мордор

Re: Урок 10. Оптимизируем реализацию обработчиков.

Сообщение KamiSempai » 18 ноя 2014, 18:08

Millik писал(а):Вариант создания слушателя прямо в методе onCreate(), мне кажется, ухудшает читабельность кода.
Если уж и реализовывать этот интерфейс, то через отдельный внутренний класс:
[syntax=java]
protected void onCreate(Bundle savedInstanceState) {
//.........
btnCancel.setOnClickListener(new btnClicked ());

}

class btnClicked implements OnClickListener{
@Override
public void onClick(View v) {
//something to do
}
}
[/syntax]
Именования классов с маленькой буквы тоже ухудшает читабельность кода. ;)
В целом замечание правильное. Только вот если везде использовать new btnClicked (), для каждой кнопки создастся свой обработчик, хоть и из одного класса. В этой ситуации вся оптимизация коту под хвост.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

Аватара пользователя
Millik
Сообщения: 7
Зарегистрирован: 18 ноя 2014, 16:54

Re: Урок 10. Оптимизируем реализацию обработчиков.

Сообщение Millik » 19 ноя 2014, 11:38

KamiSempai писал(а):Именования классов с маленькой буквы тоже ухудшает читабельность кода. ;)
Сори, мой косяк. Относительно недавно варюсь в джаве.
KamiSempai писал(а):В целом замечание правильное. Только вот если везде использовать new btnClicked (), для каждой кнопки создастся свой обработчик, хоть и из одного класса. В этой ситуации вся оптимизация коту под хвост.
Но никто ведь не заставляет каждый раз создавать новый объект прямо в вызове метода. Можно создать один на все кнопки с одинаковыми событиями.
Последний раз редактировалось Millik 20 ноя 2014, 10:14, всего редактировалось 1 раз.

Ltc
Сообщения: 30
Зарегистрирован: 19 ноя 2014, 16:56

Re: Урок 10. Оптимизируем реализацию обработчиков.

Сообщение Ltc » 19 ноя 2014, 17:05

Доброго времени суток!Скажите пожалуйста,это нормально,что у меня вместе R.java,написано BuildConfig.java(Причем указывается R.layout......)
Как исправить?Или не нужно?

Ответить