Урок 9. Обработчики событий на примере Button.

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

Re: Урок 9. Обработчики событий на примере Button.

Сообщение Foenix » 23 ноя 2014, 11:48

в xml у тебя кнопки перепутаны.
R.id.team

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

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

Re: Урок 9. Обработчики событий на примере Button.

Сообщение Vladimir991 » 23 ноя 2014, 13:50

Foenix писал(а):в xml у тебя кнопки перепутаны.
Спасибо! Все верно. Исправил, заработало! + в благодарность летит. :lol:

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

Re: Урок 9. Обработчики событий на примере Button.

Сообщение Millik » 25 ноя 2014, 14:02

Vladimir991 писал(а):Спасибо урок понятен, все работает, но немножко наоборот кнопки работают. Нажимаешь на кнопку Cancel, пишет Нажата кнопка OK и наоборот, нажимаешь на кнопку OK, пишет нажата кнопка Cancel. Код перелопатил, все вроде верно написано, но что-то, где-то всетаки не так. Направьте в нужном направлении пожалуйста. Вот скрин кода:
По коду вроде всё нормально. Глянь в лэйаут фале, может там ИД кнопок попутаны.

isachenko
Сообщения: 47
Зарегистрирован: 30 июл 2014, 21:43

Re: Урок 9. Обработчики событий на примере Button.

Сообщение isachenko » 25 ноя 2014, 20:56

Спасибо за урок!
Такой вопрос.
у меня задача: два текста и одна кнопка. нужно менять текст туда-сюда по нажатию кнопки сколько угодно раз. Как это грамотно прописать в обработчике?
сейчас код выглядит так
[syntax=java5] public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_read:
textView1.setText(R.string.act3_1_v);
break;[/syntax]
R.string.act3_1_v нужно менять на R.string.act3_1 и обратно.
Спасибо за уроки!

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

Re: Урок 9. Обработчики событий на примере Button.

Сообщение Millik » 25 ноя 2014, 23:40

isachenko писал(а):Спасибо за урок!
Такой вопрос.
у меня задача: два текста и одна кнопка. нужно менять текст туда-сюда по нажатию кнопки сколько угодно раз. Как это грамотно прописать в обработчике?
сейчас код выглядит так
[syntax=java5] public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_read:
textView1.setText(R.string.act3_1_v);
break;[/syntax]
R.string.act3_1_v нужно менять на R.string.act3_1 и обратно.
1)Самое простое это прописать проверку (код не тестил, просто описал логику):
[syntax=java5]
if(textView1.getText().equals(getResources().getString(R.string.act3_1) {
textView1.setText(R.string.act3_1_v);
} else if(textView1.getText().equals(getResources().getString(R.string.act3_1_v) {
textView1.setText(R.string.act3_1);
}[/syntax]

2) Но я бы вынес обработчик в отдельный класс. А в класс добавил флаг, который следит за текущим текстом(код не тестил, просто описал логику):
[syntax=java5]
class MainActivity extend Activity{

TextView textView1; //обязательно объявляем ТекстВью как поле класса, чтобы внутренний класс имел к нему доступ

@Override
protected void onCreate(Bundle savedInstanceState) {
//..............
textView1 = (TextView) findViewById(R.id.textView1); //а тут уже только инициализируем

OnClick onClick = new OnClick(); //создаем объект типа OnClick, который реализует интерфейс обработчика

btn.setOnClickListener(onClick); //присваиваем это объект кнопке

//..............
}

private class OnClick implements OnClickListener {

private int currentText = R.string.act3_1; //тут нужно указать первоначальное значение (либо id текста, если в TextView уже используется один из нужных текстов, либо 0, если что-то другое) (Если сразу указали id, то блок default в switch можно опустить)

@Override
public void onClick(View v) {

switch (currentText ){
case R.string.act3_1:
textView1.setText(R.string.act3_1_v);
currentText = R.string.act3_1_v;
break;
case R.string.act3_1_v:
textView1.setText(R.string.act3_1);
currentText = R.string.act3_1;
break;
default: //если текст в TextView изначально другой, то тут можно указать какой он будет при первом нажатии(эту секцию можно удалить, если первоначальное значение уже было id одно из текста.)
textView1.setText(R.string.act3_1);
currentText = R.string.act3_1;
break;
}

}
}[/syntax]

isachenko
Сообщения: 47
Зарегистрирован: 30 июл 2014, 21:43

Re: Урок 9. Обработчики событий на примере Button.

Сообщение isachenko » 27 ноя 2014, 21:26

Millik, большое спасибо!
Спасибо за уроки!

Аватара пользователя
lazarchyk
Сообщения: 2
Зарегистрирован: 21 дек 2014, 18:03
Откуда: Украіна

Re: Урок 9. Обработчики событий на примере Button.

Сообщение lazarchyk » 21 дек 2014, 18:12

здравствуйте в создании проекта в меню compile with
не могу указать андроид как в уроке версии 2.3.3
я думаю по етому в конце не запускаетса програма и показивает ошибки.
Вложения
ошибка.jpg
ошибка.jpg (222.17 КБ) 13764 просмотра

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

Re: Урок 9. Обработчики событий на примере Button.

Сообщение Foenix » 21 дек 2014, 18:31

ну в манифесте поставь, какие проблемы
R.id.team

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

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

Re: Урок 9. Обработчики событий на примере Button.

Сообщение Mikhail_dev » 21 дек 2014, 18:37

Как раз таки вы его уже указали, в min sdk И target sdk. А compile sdk выберите 19

Аватара пользователя
lazarchyk
Сообщения: 2
Зарегистрирован: 21 дек 2014, 18:03
Откуда: Украіна

Re: Урок 9. Обработчики событий на примере Button.

Сообщение lazarchyk » 23 дек 2014, 17:02

здравствуйте у меня проекте такие ошибки :
как их исправить ?
проект не запускаетса пишет исправте ошибки
ошибка под номером 5,6 это не соответствие с тем что показано в уроке но вибрать нужное немогу, нету в випадающем списке

№ 7([2014-12-23 15:11:53 - P0091_OnClickButtons] D:\android\workspace\appcompat_v7\res\values-v21\themes_base.xml:191: error: Error: No resource found that matches the given name: attr 'android:colorPrimaryDark'.
[2014-12-23 15:11:53 - P0091_OnClickButtons]
)
Вложения
ошибка2.jpg
ошибка2.jpg (603.72 КБ) 13754 просмотра

Аватара пользователя
klblk
Сообщения: 1097
Зарегистрирован: 18 окт 2012, 11:17
Откуда: г. Красноярск

Re: Урок 9. Обработчики событий на примере Button.

Сообщение klblk » 24 дек 2014, 07:22

для проекта appcompat_v7 поставте в свойствах Android 5.0 (api 21)

DmitriyEA
Сообщения: 1
Зарегистрирован: 24 дек 2014, 18:27

Re: Урок 9. Обработчики событий на примере Button.

Сообщение DmitriyEA » 24 дек 2014, 18:33

Подскажите, в этом примере мы сделали так что при нажатие на Button в TextView появляется надпись, нажимаем на другой Button появляется другая надпись. Как сделать так что бы при нажатии на Button в TextView появлялась надпись, а после нажатия на другой Button к старой надписи прибавлялась новая.

finberg
Сообщения: 51
Зарегистрирован: 11 мар 2013, 14:20

Re: Урок 9. Обработчики событий на примере Button.

Сообщение finberg » 25 дек 2014, 18:45

textView.append(.....);

rilax
Сообщения: 5
Зарегистрирован: 27 дек 2014, 13:07

Re: Урок 9. Обработчики событий на примере Button.

Сообщение rilax » 05 янв 2015, 19:13

Здравствуйте, делаю пример данного урока в android studio, он у меня ругается на OnClickListener, вот скрин:
Изображение
Не понимаю, что не так?

Аватара пользователя
doter.ua
Сообщения: 1106
Зарегистрирован: 23 ноя 2013, 16:08
Откуда: Ukraine

Re: Урок 9. Обработчики событий на примере Button.

Сообщение doter.ua » 06 янв 2015, 01:52

rilax писал(а):Здравствуйте, делаю пример данного урока в android studio, он у меня ругается на OnClickListener, вот скрин:

Не понимаю, что не так?
bb.setOnClickListener( и здесь уже newOnClickListener (){
бла бла бла
});

P.S. для импорта помести курсор на слово и alt+enter
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.

dantemustdie
Сообщения: 6
Зарегистрирован: 07 янв 2015, 23:08

Re: Урок 9. Обработчики событий на примере Button.

Сообщение dantemustdie » 09 янв 2015, 21:41

ребят, нужна помощь. что не так?
Вложения
Снимок.PNG
Снимок.PNG (18.06 КБ) 13657 просмотров
Снимок.JPG
Снимок.JPG (59.52 КБ) 13657 просмотров

dantemustdie
Сообщения: 6
Зарегистрирован: 07 янв 2015, 23:08

Re: Урок 9. Обработчики событий на примере Button.

Сообщение dantemustdie » 09 янв 2015, 21:49

с двумя ошибками разобрался, ктрл+шифт+О оказывается не работал, вручную импортировал

Svinskiy19
Сообщения: 1
Зарегистрирован: 12 янв 2015, 22:38

Re: Урок 9. Обработчики событий на примере Button.

Сообщение Svinskiy19 » 13 янв 2015, 02:01

import android.content.DialogInterface;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.ExpandableListView;
import android.widget.TextView;


public class StartActivity extends ActionBarActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_start);

final TextView tvOut = (TextView) findViewById(R.id.tvOut);
Button btnStart = (Button) findViewById(R.id.btnStart);
Button btnCancel = (Button) findViewById(R.id.btnCancel);

View.OnClickListener oclBtnStart = new View.OnClickListener() {

@Override

public void OnClick(View v) {
tvOut.setText("Нажата кнопка Старт");

}
};
}

Ребята, помогите. Ругается на синее OnClickListener (что он должен быть объявлен абстрактным или применяться к методу OnClick), @override конфликтует с верхним (красным, но при попеременном удалении результата не дает).
PS. Урок идет в эклипсе, я делаю в студии ( вроде все импортировал). В чем проблема?

Irish.Tippler
Сообщения: 7
Зарегистрирован: 07 ноя 2012, 16:43
Контактная информация:

Re: Урок 9. Обработчики событий на примере Button.

Сообщение Irish.Tippler » 20 янв 2015, 18:07

У меня импорт выглядит так:
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.view.View.OnClickListener;

это позволяет не писать каждый раз View в таких местах:
View.OnClickListener oclBtnStart = new View.OnClickListener()

Nick678
Сообщения: 5
Зарегистрирован: 22 фев 2015, 22:12

Re: Урок 9. Обработчики событий на примере Button.

Сообщение Nick678 » 23 фев 2015, 23:47

Совсем непонятный урок (8 тоже). Использую андроид студио

Ответить