Страница 8 из 11

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

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

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

Добавлено: 07 июл 2014, 01:35
betirsolt
разница между этим и предыдущим уроком в том что мы не создаем private OnClickListener oclBtn; так? или я что то не понимаю

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

Добавлено: 04 авг 2014, 13:22
YettyZzZone
Ребят, почему вылазит ошибка AndroidManifest.xml? Код вроде в порядке. Компилировалось на Android 4.4 KitKat, API19.
1.jpg
1.jpg (22.84 КБ) 14690 просмотров

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

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 все как на сайте.

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

Добавлено: 04 авг 2014, 13:29
Foenix
код тут причем? манифеста, пишет, нету.

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

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

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

Добавлено: 04 авг 2014, 13:37
Foenix
куча вариантов решения из первой ссылки гугла
http://stackoverflow.com/questions/1252 ... is-missing

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

Добавлено: 04 авг 2014, 13:48
Mikhail_dev
Уходите уже от эклипса, переходите на Idea/As

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

Добавлено: 28 авг 2014, 13:54
Qurubo
Помогите пожалуйста в Android Studio не работает обработчик OnClickListener

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

Добавлено: 28 авг 2014, 14:43
Donart
Помогите пожалуйста в Android Studio не работает обработчик OnClickListener
Не тот импорт

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

Добавлено: 28 авг 2014, 16:56
Qurubo
Donart писал(а): Не тот импорт
У меня только был один импорт dialoginterface.onclicklistener

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

Добавлено: 28 авг 2014, 17:01
Mikhail_dev
Надо View.OnClickListener

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

Добавлено: 28 авг 2014, 17:40
VKostikov
Мой первопост. В качестве хобби решил посмотреть что и как у нас в части программирования под Андройд.
Гайд на этом ресурсе отличный.

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

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

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

Добавлено: 28 авг 2014, 17:49
Qurubo
Mikhail_dev писал(а):Надо View.OnClickListener
Но его нету! Что делать ?

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

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

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

Добавлено: 10 сен 2014, 20:28
duddeniska
Всем привет ! По уроку вопросов как таковых нету. Единственный вопрос про второй метод. В строке public class MainActivity extends ActionBarActivity implements OnClickListener что такое implements OnClickListener

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

Добавлено: 10 сен 2014, 21:43
Mikhail_dev
это интерфейс, а implements показывает, что данный класс реализует данный интерфейс

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

Добавлено: 18 ноя 2014, 17: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]

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

Добавлено: 18 ноя 2014, 18:08
KamiSempai
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 (), для каждой кнопки создастся свой обработчик, хоть и из одного класса. В этой ситуации вся оптимизация коту под хвост.

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

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

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

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