Атрибут onClick
Относительно новый способ, специально разработанный для Android - атрибут onClick (на панели свойств отображается как On Click):
Пример XML разметки
android:onClick="myShopping_Click"
Для этого метода в классе активности нужно прописать имя метода, который будет обрабатывать нажатие.
Метод должен быть открытым public и с одним параметром, использующим объект View.
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void myShopping_Click(View view) {
// выводим всплывающее сообщение
Toast.makeText(this,"Thank you for shopping with us!",Toast.LENGTH_SHORT).show();
}
Когда пользователь нажимает на кнопку, то вызывается метод myShopping_Click, который генерирует всплывающее сообщение. При подобном подходе вам не требуется объявлять кнопку через конструкцию
button1 = (Button)findViewById(R.id.button1);
, разработчики Android таким образом упрощают разработку приложений. Данный способ применим не только к кнопке, но и к другим элементам.
Данный способ возможно не будет работать в фрагментах!!!
Рассмотрим несколько примеров обработки нажатия на кнопку
Перетаскиваем элемент Button в activity_main.xml. В Properties, найдите свойство Text и присвойте значение Say something, свойству id присвойте значение @+id/butGoodMorning вместо стандартного @+id/button1.
Создаём метод для обработки нажатия на кнопку. В свойстве On Click, нашей кнопки, мы присвоили имя методу как butGoogMorning_Click.
Переключитесь с вкладки Graphical Layout на вкладку activity_main.xml и найдите тег <Button>.
У вас должна появиться такая строчка
android:onClick="butGoodMorning_Click"
Таким образом мы определили событие butGoodMorning_Click для кнопки и теперь осталось написать обработчик события.
Далее, перетаскиваем элемент TextView, если у вас его не было. Элемент TextView является текстовой меткой для вывода текста. В метке будем выводить сообщение после щелчка кнопки. В окне свойств удаляем текст из свойства Text, чтобы в текстовой метке ничего не было. Проследите, чтобы у него был идентификатор. Теперь система знает о существовании элемента TextView и мы можем к нему обращаться для изменения различных свойств.
Открываем файл MainActivity.java. До метода onCreate() добавьте строчку:
TextView sayGoodMorning;
//Мы объявили переменную sayGoodMorning типа TextView
Далее внутри метода onCreate() после вызова метода setContentView() добавьте строку:
sayGoodMorning = (TextView)findViewById(R.id.textView1);
Рассмотрим, почему для TextView нужны скобки. Сам по себе метод findViewById() возвращает объект View, вы сами можете убедиться, если подведёте курсор к названию метода - findViewById.
Класс View является общим предком для всех компонентов, но так как мы работаем с конкретным компонентом, то сужаем область возможностей объекта, чтобы избежать возможных ошибок и работать только со свойствами указанного компонента.
Метод findViewById() используется для получения ссылки на элемент, у которого мы определили id.
Пишем код нашего метода сразу после метода onCreate:
public void butGoodMorning_Click() {
// переменной sayGoodMorning через метод setText() присваиваем нужный текст
sayGoodMorning.setText("Good Morning!");
}
Часть исходного кода
public class MainActivity extends ActionBarActivity {
TextView sayGoodMorning;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sayGoodMorning = (TextView)findViewById(R.id.textView1);
}
public void butGoodMorning_Click(View v) {
// переменной sayGoodMorning через метод setText() присваиваем нужный текст
sayGoodMorning.setText("Good Morning!");
}
Рассмотрим более короткий пример обработки нажатия на кнопку
В этом примере, мы сразу, в методе butGoodMorningTwo_Click объявляем переменную sayGoodMorning типа TextView и ссылаемся на метку textView1
Сразу после метода onCreate() пишем:
public void butGoodMorningTwo_Click(View v) {
// переменная sayGoodMorning ссылается на метку textView1
TextView sayGoodMorning = (TextView)findViewById(R.id.textView2);
// присваиваем ей нужный текст через метод setText()
sayGoodMorning.setText("Good Morning Again!");
}
Часть исходного кода будет выглядеть следующим образом.
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void butGoodMorningTwo_Click(View v) {
TextView sayGoodMorning = (TextView)findViewById(R.id.textView2);
sayGoodMorning.setText("Good Morning Again!");
}
Комментариев нет :
Отправить комментарий
Оставить отзыв