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

Обсуждение уроков
AndreyI
Сообщения: 372
Зарегистрирован: 14 май 2012, 16:18

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

Сообщение AndreyI » 18 сен 2012, 22:59

Если вы имеете ввиду не экранные кнопки, а клавиатуру на телефоне, то в обработчик OnKeyListener передается код нажатой кнопки, а также KeyEvent из которого можно получить всю инфу о событии
onKey(View v, int keyCode, KeyEvent event)

Quver
Сообщения: 9
Зарегистрирован: 18 сен 2012, 00:37

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

Сообщение Quver » 18 сен 2012, 23:02

Спасибо за столь быстрый ответ, не ожидал.
имел в виду экранные.
и как уже увидел позже, ответ на мой вопрос - это следующий урок. Так что теперь не буду так спешить задавать вопросы :roll:

Алексей
Сообщения: 3
Зарегистрирован: 28 сен 2012, 14:17

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

Сообщение Алексей » 28 сен 2012, 14:41

Почему, когда я добавляю событие кнопки android:onClick="click", то в эмуляторе вместо виджета появляется окно с надписью "Problem loading widget" ???Изображение
Последний раз редактировалось Алексей 28 сен 2012, 21:53, всего редактировалось 1 раз.

Аватара пользователя
powercat
Сообщения: 508
Зарегистрирован: 20 июл 2012, 11:31

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

Сообщение powercat » 28 сен 2012, 15:16

Вот если б делали скрины проблем и выкладывали бы, было б проще ответить...рекомендую для этого прогу GreenShot...очень-очень удобная вещь

tolik777
Сообщения: 37
Зарегистрирован: 06 июл 2012, 14:25

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

Сообщение tolik777 » 12 ноя 2012, 12:23

Подскажите как реализовать такое: пока нажата кнопка, посылаются какие-то данные (т.е. грубо говоря вызывается функция каждые 500 мс), как только отпустили кнопку, то передача данных прекращается.

AndreyI
Сообщения: 372
Зарегистрирован: 14 май 2012, 16:18

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

Сообщение AndreyI » 12 ноя 2012, 12:53

Нужно прицепить к кнопке OnTouchListener и в нем отлавливать события в методе onTouch (View v, MotionEvent event) из event получаем action ( event.getAction()) и по его значению определяем что нужно делать.
Вызов функции через определенный промежуток времени, к примеру, можно оформить в отдельном потоке, а при отпускании кнопки убивать этот поток.

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

			@Override
			public boolean onTouch(View v, MotionEvent event) {
				switch (event.getAction()) {
				case MotionEvent.ACTION_DOWN:
				//запускаем задачу вызова функции в отдельном потоке	
					break;
				case MotionEvent.ACTION_UP:
				//убиваем поток созданный в ACTION_DOWN
					break;

				default:
					break;
				}
				return false;
			}

xxxdenxxx
Сообщения: 2
Зарегистрирован: 08 дек 2012, 20:10

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

Сообщение xxxdenxxx » 10 дек 2012, 15:55

Почему то у меня вообще какой-то другой код получился,не такой допустим как у вас:

public class MainActivity extends Activity {

TextView tvOut;
Button btnOk;
Button btnCancel;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

// найдем View-элементы
tvOut = (TextView) findViewById(R.id.tvOut);
btnOk = (Button) findViewById(R.id.btnOk);
btnCancel = (Button) findViewById(R.id.btnCancel);

}
}


А вообще вот какой:

package ru.startandroid.develop.onclickbuttons;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;

public class MainActivity extends Activity {

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

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

}
Что сделать то нужно?

SergTop
Сообщения: 4
Зарегистрирован: 10 дек 2012, 01:04

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

Сообщение SergTop » 13 дек 2012, 02:07

Прошу прощения за глупый вопрос. На эмуляторе в уроках цвет фона стал черным, но в коде задания этого параметра я не нашел. Это задается где-то в глобальных настройках проекта или как?

Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

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

Сообщение damager82 » 18 дек 2012, 09:29

SergTop писал(а):Прошу прощения за глупый вопрос. На эмуляторе в уроках цвет фона стал черным, но в коде задания этого параметра я не нашел. Это задается где-то в глобальных настройках проекта или как?
На это не обращайте внимания, это темы разные. Начальные уроки я переделывал под новой версией AVD и там в манифесте прописывается тема (android:theme), а большинство остальных уроков остались старыми.
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

jeizone
Сообщения: 2
Зарегистрирован: 12 янв 2013, 21:26

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

Сообщение jeizone » 20 янв 2013, 23:03

Прошу прощения, но первые уроки, а особенно этот, жутко тугие! Реально не понятно что куда вставлять. Автор приводит листинг кода потом пишет добавляем это и то, а что и куда просто не понятно... Оттого народ и пишет что тупит жутко по несколько дней. У меня например вообще нет времени заморачиваться на непонятные уроки и я просто не съедаю их и перехожу к следующим еще более не понятным(материал то прошлый не усвоен). Очень жаль, хорошее начинание, но видимо совсем новичку без знания Jawa тут делать нечего..

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

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

Сообщение rezak90 » 20 янв 2013, 23:12

jeizone писал(а):Прошу прощения, но первые уроки, а особенно этот, жутко тугие! Реально не понятно что куда вставлять. Автор приводит листинг кода потом пишет добавляем это и то, а что и куда просто не понятно... Оттого народ и пишет что тупит жутко по несколько дней. У меня например вообще нет времени заморачиваться на непонятные уроки и я просто не съедаю их и перехожу к следующим еще более не понятным(материал то прошлый не усвоен). Очень жаль, хорошее начинание, но видимо совсем новичку без знания Jawa тут делать нечего..
а как вы хотели без времени усвоить что то :?: :!: :?:
и без
Jawa
8-) конечно вы ничего не поймёте
R.id.team
Политика на форуме запрещена

jeizone
Сообщения: 2
Зарегистрирован: 12 янв 2013, 21:26

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

Сообщение jeizone » 20 янв 2013, 23:16

"Google Android - это несложно" многие наверняка повелись на этот по видимому не совсем точный лозунг))

Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

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

Сообщение damager82 » 24 янв 2013, 12:55

jeizone писал(а):У меня например вообще нет времени заморачиваться на непонятные уроки и я просто не съедаю их и перехожу к следующим еще более не понятным
Вам деньги вернуть? ))
Про то, что нужны знания Java - написано в первом уроке.
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

Аватара пользователя
Finch
Сообщения: 439
Зарегистрирован: 16 июл 2012, 21:37

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

Сообщение Finch » 24 янв 2013, 15:03

jeizone писал(а):Jawa
я тоже не знаю такого языка, как ни странно.
П.С. ты знаешь что программирование - это не гвоздь забить, типа раз показали и умеешь уже, знаешь?????
Хочешь понимать о чем речь, учи основы ООП, Java. Ну а со знаниями Jawa ты далеко не пойдешь.
CEO of a company R.id.team

Digetix
Сообщения: 117
Зарегистрирован: 12 окт 2012, 15:31

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

Сообщение Digetix » 25 янв 2013, 16:02

Доброго времени суток. Как сделать кнопку на карте чтоб она меняла вид ( карта - спутник ), кнопки на карте уже есть, интересует именно код, покаместь такой:

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

public void onClickSp (View v)   {					 
	   
            mapView.setSatellite(true);	    		
	    	
            }	
public void onClickSt (View v)     {
					 
 	    mapView.setSatellite(false);
 		
 	}
То есть две кнопки, на них пока onClickSp и onClickSt, понимаю, что это "как-то не так", хочу сделать одну кнопку, чтоб нажимая на неё менялся вид с mapView.setSatellite(true) на mapView.setSatellite(false).

Хотя если подойти с другой стороны, то при нажатии на кнопку проверить какой вид карты. В общем, прошу совета.

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

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

Сообщение rezak90 » 25 янв 2013, 19:02

Digetix
TogleButton ?
у баттона есть состояния activated:

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

if(((Button)v).isActivated()) {
mapView.setSatellite(true);
} else {
mapView.setSatellite(false);
}
((Button)v).setActivated(!((Button)v).isActivated());
R.id.team
Политика на форуме запрещена

Digetix
Сообщения: 117
Зарегистрирован: 12 окт 2012, 15:31

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

Сообщение Digetix » 26 янв 2013, 00:22

Спасибо за ответ. Забыл отписаться, что сделал так:

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

public void onToggleClicked(View view) {            
            toogleButton = (ToggleButton) findViewById(R.id.toggleButton1);
            boolean on = ((ToggleButton) view).isChecked();            
            if (on) {               
                 mapView.setSatellite(true);
            } else {                
                 mapView.setSatellite(false);
            }
        }
А в .xml добавил

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

android:onClick="onToggleClicked"
android:background="@android:drawable/btn_default"
"@android:drawable/btn_default" убрал полоску

skostychev
Сообщения: 2
Зарегистрирован: 13 фев 2013, 12:14

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

Сообщение skostychev » 13 фев 2013, 12:29

[quote][/quote]Помогите, пожалуйста, начинающему найти ошибку в MainActivity.java.

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

package ru.startandroid.develop.onclickbuttons;

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

public class MainActivity extends Activity {

	  TextView tvOut;
	  Button btnOk;
	  Button btnCancel;

	  /** Called when the activity is first created. */
	  @Override
	  public void onCreate(Bundle savedInstanceState) {
	    super.onCreate(savedInstanceState);
	    setContentView(R.layout.main);

	    // найдем View-элементы
	    tvOut = (TextView) findViewById(R.id.tvOut);
	    btnOk = (Button) findViewById(R.id.btnOk);
	    btnCancel = (Button) findViewById(R.id.btnCancel);

	    // создаем обработчик нажатия
	    OnClickListener oclBtnOk = new OnClickListener() {
	      @Override
	      public void onClick(View v) {
	        // Меняем текст в TextView (tvOut)
	        tvOut.setText("Нажата кнопка ОК");
	      }
	      OnClickListener oclBtnCancel = new OnClickListener() {
	          @Override
	          public void onClick(View v) {
	            // Меняем текст в TextView (tvOut)
	            tvOut.setText("Нажата кнопка Cancel");
	          }
	        };
	    };

	    // присвоим обработчик кнопке OK (btnOk)
	    btnOk.setOnClickListener(oclBtnOk);
	    btnCancel.setOnClickListener(oclBtnCancel);
	  }
	}
Еклипс говорит ошибки в 29, 36, 44 и 45 строке.

Заранее спасибо.

Roger68
Сообщения: 16
Зарегистрирован: 12 фев 2013, 23:43

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

Сообщение Roger68 » 13 фев 2013, 14:50

Не нравицца мне это место.

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

	    // создаем обработчик нажатия
	    OnClickListener oclBtnOk = new OnClickListener() {
	      @Override
	      public void onClick(View v) {
	        // Меняем текст в TextView (tvOut)
	        tvOut.setText("Нажата кнопка ОК");
	      }
	      OnClickListener oclBtnCancel = new OnClickListener() {
	          @Override
	          public void onClick(View v) {
	            // Меняем текст в TextView (tvOut)
	            tvOut.setText("Нажата кнопка Cancel");
	          }
	        };
	    };
У тебя второй обработчик влез внутрь первого. Так будет лучше

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

	    // создаем обработчик нажатия
	    OnClickListener oclBtnOk = new OnClickListener() {
	      @Override
	      public void onClick(View v) {
	        // Меняем текст в TextView (tvOut)
	        tvOut.setText("Нажата кнопка ОК");
	      }
	    };
	    OnClickListener oclBtnCancel = new OnClickListener() {
	          @Override
	          public void onClick(View v) {
	            // Меняем текст в TextView (tvOut)
	            tvOut.setText("Нажата кнопка Cancel");
	          }
	    };

skostychev
Сообщения: 2
Зарегистрирован: 13 фев 2013, 12:14

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

Сообщение skostychev » 13 фев 2013, 16:39

Roger68

Спасибо, но не помогло ((

Ответить