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

Обсуждение уроков
Аватара пользователя
Ivlianna
Сообщения: 4
Зарегистрирован: 10 сен 2013, 12:00
Откуда: Estonia
Контактная информация:

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

Сообщение Ivlianna » 10 сен 2013, 12:17

Попыталась добавить третью кнопку по примеру... Как только я начинаю менять что-то сама, всё запарывается, приложение просто закрывается в эмуляторе((( Хотя при компиляции ошибок никаких нет.. Не понимаю где ошибка, вот код:
(выделила то что сама дописала)
Вложения
MainActivity.java
MainActivity.java
2.jpg (174.06 КБ) 13968 просмотров
main.xml
main.xml
1.jpg (168.57 КБ) 13968 просмотров

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

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

Сообщение Mikhail_dev » 10 сен 2013, 12:55

Чую статья по работе с поиском ошибок средствами самого Андроида, стала актуальной как никогда...
Попыталась добавить третью кнопку по примеру..
Ну так в примере по другому. Вот вы торопитесь, тем самым сами себе отстреливая ногу глупыми ошибками.
Раз
[syntax=java5]public class MainActivity extends Activity implements OnClickListener {[/syntax]
Два
[syntax=java5]btnOk.setOnClickListener(this);[/syntax]

Аватара пользователя
Ivlianna
Сообщения: 4
Зарегистрирован: 10 сен 2013, 12:00
Откуда: Estonia
Контактная информация:

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

Сообщение Ivlianna » 10 сен 2013, 13:18

no-- писал(а):Чую статья по работе с поиском ошибок средствами самого Андроида, стала актуальной как никогда...
Попыталась добавить третью кнопку по примеру..
Ну так в примере по другому. Вот вы торопитесь, тем самым сами себе отстреливая ногу глупыми ошибками.
Раз
[syntax=java5]public class MainActivity extends Activity implements OnClickListener {[/syntax]
Два
[syntax=java5]btnOk.setOnClickListener(this);[/syntax]

Все заработало, спасибо!
Пересмотрела видео и увидела, что промелькнуло "implements OnClickListener", а в текстовой версии урока этого нет. Поэтому и ошибку выдавал и просил ставить скобки перед this)

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

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

Сообщение Foenix » 10 сен 2013, 17:21

mozilalvfg, NullPointerException - это самая легкая ошибка. Щелкай на строку ниже, где адрес в твоей программе at android.app.Activity.findViewById(Activity.java:1794) и затем в этой строке ищи использование переменных, которые не инициализированы (не созданы, а просто объявлены, или даже не объявлены) выше.
Последний раз редактировалось Foenix 10 сен 2013, 17:24, всего редактировалось 1 раз.
R.id.team

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

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

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

Сообщение Foenix » 10 сен 2013, 17:23

а я думаю, извините за офф, что кнопка с таким названием вообще нежизнеспособна.
R.id.team

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

Konstantin63
Сообщения: 1
Зарегистрирован: 13 сен 2013, 19:57

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

Сообщение Konstantin63 » 13 сен 2013, 20:08

Может ли eclipse автоматически генерировать код обработчиков как это делает Visual Studio
по двойному щелчку на выбранном элементе ?

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

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

Сообщение Mikhail_dev » 13 сен 2013, 23:11

Конечно может. Только как, с ходу не скажу. Добавьте интерфейс, наведите на него мышкой когда его эклипс подчеркнет, он должен предложить вариант вставки нереализованных методов, думаю там же можно и найти Hot Keys

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

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

Сообщение Foenix » 14 сен 2013, 22:23

по ctrl+пробел дорисовывает вроде
R.id.team

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

Аватара пользователя
Karpovich
Сообщения: 7
Зарегистрирован: 24 сен 2013, 02:18

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

Сообщение Karpovich » 24 сен 2013, 02:21

Ребят, подскажите пожалуйста (очень выручите...что-то не могу я догнать) как последним методом (который не показан в уроке) правильно сделать все??? Если добавите скниры - еще лучше будет...нагляднее. Вот...=)

Kruler
Сообщения: 28
Зарегистрирован: 27 авг 2013, 13:02

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

Сообщение Kruler » 24 сен 2013, 13:29

ищи атрибут кнопки "onClick" в граф. редакторе или допиши его в xml формы android:onClick="", в кавычках должен быть твой будущий обработчик, т.е. пишешь android:onClick="clicked" в xml, а в классе
public void clicked(View v){
//обработка нажатия на кнопку
}

Аватара пользователя
trew
Сообщения: 450
Зарегистрирован: 28 сен 2013, 17:34

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

Сообщение trew » 29 сен 2013, 13:38

Решил поэкспериментировать, создал новую кнопку
String tt;
...
case R.id.myBtn:
tt = Integer.toString(v.getId());
tvOut.setText(tt);
break;
Результат выражения: 2131230724

Теперь открываю файл R.java
public static final int myBtn=0x7f080004;

Вопрос: Из выражения switch (v.getId()) что за ID храниться в v.getId() ?
(просто любопытно, на практике это никогда наверно не понадобиться)
Когда выкладываете код на форум - код оформляйте. Редактор - поищите слова Geshi Syntax -Java. (или xml)
Свои сообщения можно редактировать - кнопка edit.

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

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

Сообщение rezak90 » 29 сен 2013, 13:54

разные системы счисления, в R.java хранятся в 16-ти, а v.getId возвращает integer который есть в 10-ти системы счисления... переведи 0x7f080004 в десятичную систему и получишь 2131230724
вот поексперементируй
и в Си подобных языках используется префикс 0х
R.id.team
Политика на форуме запрещена

Аватара пользователя
Isaev
Сообщения: 145
Зарегистрирован: 03 сен 2013, 09:39
Откуда: Германия
Контактная информация:

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

Сообщение Isaev » 10 окт 2013, 09:58

У меня вот этот момент:

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

public class MainActivity extends Activity implements OnClickListener {
работает только в таком виде

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

public class MainActivity extends Activity implements View.OnClickListener {

Аватара пользователя
anber
Сообщения: 584
Зарегистрирован: 10 июн 2013, 15:05
Откуда: UA

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

Сообщение anber » 10 окт 2013, 10:40

Isaev писал(а):У меня вот этот момент:

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

public class MainActivity extends Activity implements OnClickListener {
работает только в таком виде

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

public class MainActivity extends Activity implements View.OnClickListener {
Все дело в импортах
Личные сообщения с просьбой ответить на форуме или написать программу я просто удаляю, если я в хорошем настроении. Если в плохом добавляю автора в черный список. По любым другим вопросам feel free to write to me.

Bringoff
Сообщения: 12
Зарегистрирован: 18 сен 2013, 07:44

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

Сообщение Bringoff » 19 окт 2013, 08:08

dlnsk писал(а): В результате эксперимента (android 2.2) обратил внимание что кнопка одинаково хорошо реагирует на оба способа, а вот TextView не желает реагировать на клик, если он привязан через android:onClick, но прекрасно реагирует через OnClickListener.
Я, конечно, слоу, но всё работает и через установку в Layout. Просто надо у TextView установить

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

android:clickable="true"
? PROFIT! :)

Majard
Сообщения: 2
Зарегистрирован: 06 ноя 2013, 18:12

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

Сообщение Majard » 06 ноя 2013, 18:18

Простите, пожалуйста, за совсем уж тупой вопрос, но ответьте кому не сложно...
в строчке public void onClick(View v) что значит View v? Что здесь есть v и почему v?

Аватара пользователя
trew
Сообщения: 450
Зарегистрирован: 28 сен 2013, 17:34

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

Сообщение trew » 06 ноя 2013, 18:29

Majard писал(а):Простите, пожалуйста, за совсем уж тупой вопрос, но ответьте кому не сложно...
в строчке public void onClick(View v) что значит View v? Что здесь есть v и почему v?
View - это любой элемент на Activity, его можно назвать ещё компонент (Button, TextView, EditText и т.д.)
View v , где v - это переменная (можно вместо "v" написать свою переменную, тогда далее в коде нужно будет её указывать).
Это по смыслу тоже самое, что в коде
Integer i;

Урок 4 - посмотрите там на изображения
http://startandroid.ru/ru/uroki/vse-uro ... jstva.html
Когда выкладываете код на форум - код оформляйте. Редактор - поищите слова Geshi Syntax -Java. (или xml)
Свои сообщения можно редактировать - кнопка edit.

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

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

Сообщение Foenix » 06 ноя 2013, 22:34

Majard писал(а):Простите, пожалуйста, за совсем уж тупой вопрос, но ответьте кому не сложно...
в строчке public void onClick(View v) что значит View v? Что здесь есть v и почему v?
а все остальные слова в этой строчке вам понятны?
R.id.team

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

Majard
Сообщения: 2
Зарегистрирован: 06 ноя 2013, 18:12

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

Сообщение Majard » 07 ноя 2013, 06:16

Спасибо. Теперь понятно)))

StupIvan
Сообщения: 2
Зарегистрирован: 17 ноя 2013, 14:25

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

Сообщение StupIvan » 17 ноя 2013, 14:28

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

package com.example.p0101_Listener;

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

public class MainActivity extends Activity {
	TextView tvOut;
	Button btnOk;
	Button btnCancel;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        tvOut = (TextView) findViewById(R.id.tvOut);
        btnOk = (Button) findViewById(R.id.btnOk);
        btnCancel = (Button) findViewById(R.id.btnCancel);}

OnClickListener oclBtn = new OnClickListener() {
	
	@Override
	public void onClick(View v) {
		// TODO Auto-generated method stub
		switch (v.getId()) {
		case R.id.btnOk:
			tvOut.setText("Нажата кнопка ОК");
		
			break;

		case R.id.btnCancel:
			tvOut.setText("Нажата кнопка Cancel");
			break;
		}
		
	}
};
	btnOk.setOnClickListener(oclBtn);
	btnCancel.setOnClickListener(oclBtn);


   
    }
Выдает ошибку на строчках
btnOk.setOnClickListener(oclBtn);
btnCancel.setOnClickListener(oclBtn);
подчеркивает точку и oclBtn, помогите, в чем ошибка?

Ответить