Урок 9. Обработчики событий на примере Button.
Re: Урок 9. Обработчики событий на примере Button.
Для чего нужен @Override в коде
Re: Урок 9. Обработчики событий на примере Button.
Эта аннотация говорит компилятору что идёт переопределение базового метода. Я где то читал что если например переопределить метод onResume (или какой то другой из методов жизненного цикла активити) без указания аннотации то бывали случаи что эти методы не вызывались.Djon745 писал(а):Для чего нужен @Override в коде
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Урок 9. Обработчики событий на примере Button.
OnClickListener oclBtnCancel = new OnClickListener() {
@Override
public void onClick(View v)
А как понять первую строчку и что означает или для чего нужна буква v в скобках (View v)
@Override
public void onClick(View v)
А как понять первую строчку и что означает или для чего нужна буква v в скобках (View v)
-
- Сообщения: 59
- Зарегистрирован: 02 фев 2013, 00:03
Re: Урок 9. Обработчики событий на примере Button.
v типо объект view, грубо говоря: public void onClick(Button oclBtnCancel), ежели присвоить десяти кнопкам один и тот же обработчик OnClick, то по этой фигне можно понять какая из 10-ти кнопок кликнута, наверно
-
- Сообщения: 14
- Зарегистрирован: 18 ноя 2012, 23:55
Re: Урок 9. Обработчики событий на примере Button.
Добрый день, столкнулся с проблемой:
Ошибка возникает на
.
Компилятор говорит убрать параметры. Возможно ли сделать переход в другое активити, с помощью обычного нажатия кнопки?
Или придется выдумывать флаги, которые передадут значение и в onCreatre произвести переход?
Спасибо за помощь
Код: Выделить всё
public class Radisson_registration extends Activity {
//Component`s
ToggleButton tglButton_step_1, tglButton_step_2, tglButton_step_3;
EditText etName, etSurname, etLastname, etMobile;
Button btnBack, btnNext;
Intent mainActivity, step_2_Activity;
//Values
public String clName="", clSurname="", clLastname="", clMobile="";
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.radisson_registration_step_1);
components(); //Display component`s
//onClickListener for "back" button
btnBack.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
mainActivity = new Intent(this,Radisson_BLU.class);
startActivity(mainActivity);
}
});
}
Код: Выделить всё
mainActivity = new Intent(this,Radisson_BLU.class);
Компилятор говорит убрать параметры. Возможно ли сделать переход в другое активити, с помощью обычного нажатия кнопки?
Или придется выдумывать флаги, которые передадут значение и в onCreatre произвести переход?
Спасибо за помощь
-
- Сообщения: 14
- Зарегистрирован: 18 ноя 2012, 23:55
Re: Урок 9. Обработчики событий на примере Button.
Прошу прощения, я справился. =) Не правильно видимо я организовал... Сглупил немного. Просто стоит лишь вынести за OnCreate.
Re: Урок 9. Обработчики событий на примере Button.
Все доброго времени суток) Сама программка у меня запустилась, но я захотел использовать OnLongClickListener вместо OnClickListener, написал для неё код
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 = (TextView) findViewById(R.id.tvOut);
Button btnOk = (Button) findViewById(R.id.btnOk);
Button btnCancel = (Button) findViewById(R.id.btnCancel);;
int plus=0;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btnOk.setOnLongClickListener(new View.OnLongClickListener() {
public boolean onLongClick(View v) {
// Меняем текст в TextView (tvOut)
tvOut.setText("Нажата клавиша ОК");
while(plus!=500)
{
tvOut.setText(plus);
plus++;
}
return true;
}
});
}
}
Но в телефоне программа выдаёт что в приложении ошибка. Может вы подскажете в чём именно?
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 = (TextView) findViewById(R.id.tvOut);
Button btnOk = (Button) findViewById(R.id.btnOk);
Button btnCancel = (Button) findViewById(R.id.btnCancel);;
int plus=0;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btnOk.setOnLongClickListener(new View.OnLongClickListener() {
public boolean onLongClick(View v) {
// Меняем текст в TextView (tvOut)
tvOut.setText("Нажата клавиша ОК");
while(plus!=500)
{
tvOut.setText(plus);
plus++;
}
return true;
}
});
}
}
Но в телефоне программа выдаёт что в приложении ошибка. Может вы подскажете в чём именно?
- KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Re: Урок 9. Обработчики событий на примере Button.
plus тут целое число и setText воспринимает его как ID строки из ресурсов.
Исправьте на: tvOut.setText(Integer.toString(plus));
Исправьте на: tvOut.setText(Integer.toString(plus));
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
Хватит таскать макулатуру на тренировку! Используй T Note.
Re: Урок 9. Обработчики событий на примере Button.
Это исправил, но программа так и вылетает. Я вот что подумал, может это из-за самой функции OnLongClickListener? В случае с OnClickListener приходится организовывать импорт CTRL+shift+O, а тут не нужно... может я саму функцию OnLongClickListener не верно описал?plus тут целое число и setText воспринимает его как ID строки из ресурсов.
Исправьте на: tvOut.setText(Integer.toString(plus));
Re: Урок 9. Обработчики событий на примере Button.
Мне кажется вы гдето опечатались при использовании интерфейса OnLongClickListener необходим импорт import android.view.View.OnLongClickListener;
Вот рабочий пример
Вот рабочий пример
Код: Выделить всё
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnLongClickListener;
import android.widget.Toast;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
findViewById(R.id.btnOk).setOnLongClickListener(new OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
mess();
return false;
}
});
}
@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;
}
public void mess(){
Toast.makeText(this, "click LONG", Toast.LENGTH_LONG).show();
}
}
Re: Урок 9. Обработчики событий на примере Button.
Это хороший пример, но а если мне, например, нужно выводить сообщение не в Toast а в простом TextView, допустим, чтобы просто число увеличивалось постоянно на единицу при долгом нажатии?Мне кажется вы гдето опечатались при использовании интерфейса OnLongClickListener необходим импорт import android.view.View.OnLongClickListener;
Вот рабочий пример
Попробовал вот так
- public void mess(){
plus++;
TextView.setText(Integer.toString(plus));
}
Re: Урок 9. Обработчики событий на примере Button.
Код: Выделить всё
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnLongClickListener;
import android.widget.Button;
import android.widget.TextView;
// и вот импорт
// посмотри два интерфейса
public class MainActivity extends Activity implements OnClickListener, OnLongClickListener {
Button btnOk;
TextView tv;
int count_click, count_long_click;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btnOk = (Button)findViewById(R.id.btnOk);
tv = (TextView) findViewById(R.id.tv);
// прикручиваем все наши события к кнопке
btnOk.setOnClickListener(this);
btnOk.setOnLongClickListener(this);
}
@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;
}
public boolean onLongClick(View v) {
// TODO Auto-generated method stub
count_long_click++;
//вот так делать не кчему не нужно целое число приводить к строке java сама здесь разберется
// посмотри как сделанно в методи onClick
tv.setText("Long click " + Integer.toString(count_long_click));
return false;
}
public void onClick(View v) {
// При нажатии один раз на кнопку будет изменятся надпись на кнопке
count_click++;
btnOk.setText("Click "+ count_click);
}
}
Бро, в следующий раз давай побольше инфи например что за ошибку выдает и т.д. Я сам учусь и не умею понимать на лету
Re: Урок 9. Обработчики событий на примере Button.
Спасибо огромное! прям выручил этим примером! Только вопрос в другом) При зажатии клавиши, в элементе TextView должно было отображаться увеличение числа ) в примере тоже увеличивается число, но только раз, а нужно чтобы непрерывно... опять же, пытаюсь написать свой кодОпять рабочий пример.
- public boolean onLongClick(View v) {
// TODO Auto-generated method stub
for(int i=0; i<10;)
{
count_long_click++;
//вот так делать не кчему не нужно целое число приводить к строке java сама здесь разберется
// посмотри как сделанно в методи onClick
TextView.setText("Long click" + Integer.toString(count_long_click));
i++;
try
{
Thread.sleep(1000);
}
catch (InterruptedException e){}
}
return false;
}
но что он делает: зажимаю кнопку, она продолжает гореть синим(как будто я её продолжаю нажимать) проходит 10 секунд и только тогда выводится сообщение Long click 10. Если считаешь что я обнаглел в конец и не хочу ничего писать, то напиши - чтобы я читал про потоки, и перешёл куда нибудь по http://www.dvgu.ru/meteo/PC/javalife.htm#part_4 ссылке, но всё таки я не могу разобраться с этим...
- KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Re: Урок 9. Обработчики событий на примере Button.
Команда Thread.sleep(1000) отправляет текущий поток в баиньки-баю на 1 секунду.
В данном случае Вы отправляете в сон поток отвечающий за отрисовку экрана. Поэтому и происходят зависания.
У Вас цикл 10 раз вызывает эту команду, в итоге 10 секунд здорового и расслабляющего сна
В данном случае Вы отправляете в сон поток отвечающий за отрисовку экрана. Поэтому и происходят зависания.
У Вас цикл 10 раз вызывает эту команду, в итоге 10 секунд здорового и расслабляющего сна
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
Хватит таскать макулатуру на тренировку! Используй T Note.
Re: Урок 9. Обработчики событий на примере Button.
Ведь нужно чтобы с некоторой задержкой выводились числа в TextViewКоманда Thread.sleep(1000) отправляет текущий поток в баиньки-баю на 1 секунду.
В данном случае Вы отправляете в сон поток отвечающий за отрисовку экрана. Поэтому и происходят зависания.
У Вас цикл 10 раз вызывает эту команду, в итоге 10 секунд здорового и расслабляющего сна
- KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Re: Урок 9. Обработчики событий на примере Button.
Нужно запустить отдельный поток и выполнять выше описанный код. Но в том виде в каком он сейчас, работать тоже не будет.
Советую отложить этот вопрос на потом. В уроках 80 -85 об этом будет подробно рассказано.
Советую отложить этот вопрос на потом. В уроках 80 -85 об этом будет подробно рассказано.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
Хватит таскать макулатуру на тренировку! Используй T Note.
Re: Урок 9. Обработчики событий на примере Button.
вот я тоже пока не буду вникать пока не дойду до 80-85 урока. Но мысль понял. Я если чесно и сам не знаю что еще к чему
Re: Урок 9. Обработчики событий на примере Button.
sgushenka - ты не туда копаешь мне кажется вот что тебе нужно http://startandroid.ru/ru/uroki/vse-uro ... a-kasanija урок номер 102
Re: Урок 9. Обработчики событий на примере Button.
Вот решение, если кому-то интересно
Код: Выделить всё
package ru.startandroid.develop.onclickbuttons;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnLongClickListener;
import android.widget.Button;
import android.widget.TextView;
// посмотри два интерфейса
public class MainActivity extends Activity implements OnClickListener, OnLongClickListener {
Button btnUp;
TextView TextView;
int count_click, count_long_click=0;
private int t = 0;
private RefreshHandler mRedrawHandler = new RefreshHandler();
// private static final int LONG_DELAY = 3500; // 3.5 seconds
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btnUp = (Button)findViewById(R.id.btnUp);
TextView = (TextView) findViewById(R.id.TextView);
// прикручиваем все наши события к кнопке
btnUp.setOnClickListener(this);
btnUp.setOnLongClickListener(this);
}
@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;
}
public boolean onLongClick(View v) {
// TODO Auto-generated method stub
//for(int i=0; i<10;)
//{
// count_long_click++;
//TextView.setText("");
// TextView.setText(new Integer(count_long_click).toString());
// i++;
updateUI();
//}
return false;
}
class RefreshHandler extends Handler {
@Override
public void handleMessage(Message msg) {
if (t < 10)MainActivity.this.updateUI();
}
public void sleep(long delayMillis) {
this.removeMessages(0);
sendMessageDelayed(obtainMessage(0), delayMillis);
}
};
private void updateUI() {
TextView name = (TextView) findViewById(R.id.TextView);
name.setText(Integer.toString(t));
mRedrawHandler.sleep(1000);
t++;
}
public void onClick(View v) {
// При нажатии один раз на кнопку будет изменятся надпись на кнопке
count_click++;
btnUp.setText("Click "+ count_click);
}
}
Re: Урок 9. Обработчики событий на примере Button.
Прости друг но так не интересно!!!! У тебя циферки бегут не зависимо держишь ты кнопку или отпустил. Событие сработало при долгом нажатии а дальше дело техники.