Intereting Posts
Android IllegalStateException Не зарегистрировано ни одного инструментария! Должен работать под регистрирующим оборудованием Меню Android ActionBar с вертикальными (повернутыми) текстовыми элементами на основе поставщика пользовательских действий Драйверы Xoom adb Создавать, хранить и накачивать пользовательский макет во время выполнения Дилатация и эрозия в Android Можно ли вызвать startActivityForResult из адаптера? Как найти планшет или телефон в Android, программно? Можно ли переопределить / применить стиль в макете, включенный в тег <include>? Как получить программный список поддерживаемых языков в проекте Android (НЕ) Использование файлов cookie в действии при использовании HttpClient Папка для удаления Android для больших экранов Добавление параметров для выбора с помощью jQuery не работает Возобновление активности при нажатии на уведомление «Невозможно переопределить конечный метод от SherlockActivity» Android Gradle Как создать для Android API Google 4.2.2 не для Android 4.2.2

Как поймать событие click на кнопке?

.NET Developer здесь только начинается с Eclipse и Android.

Может ли кто-нибудь показать меня самым простым способом, с абсолютными наименьшими строками кода, как сделать что-то при нажатии кнопки?

Моя кнопка имеет кнопку button1 и я просто хочу посмотреть, где / как написать обработчик onClick() .

Итак, допустим, у меня есть imageview1 невидимым. Как я могу сделать это видимым при нажатии кнопки?

РЕДАКТИРОВАТЬ:

Спасибо всем, но поскольку ни один из ваших примеров не работает для меня, я попробую: может кто-нибудь, пожалуйста, напишите код ENTIRE, чтобы сделать эту работу? Не только метод, потому что, когда я пытаюсь использовать ЛЮБОЙ из ваших методов, я получаю ошибки повсюду, поэтому очевидно, что чего-то еще не хватает. Мне нужно все увидеть, начиная со всего импорта.

Solutions Collecting From Web of "Как поймать событие click на кнопке?"

/src/com/example/MyClass.java

 package com.example import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.ImageView; public class MyClass extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button button = (Button) findViewById(R.id.button1); button.setOnClickListener(new OnClickListener() { public void onClick(View v) { ImageView iv = (ImageView) findViewById(R.id.imageview1); iv.setVisibility(View.VISIBLE); } }); } } 

/res/layout/main.xml

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent"> <Button android:text="Button" android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <ImageView android:src="@drawable/image" android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/imageview1" android:visibility="invisible" /> </LinearLayout> 

Абсолютно лучший способ: просто дайте вашей активности реализовать View.OnClickListener и напишите свой метод View.OnClickListener следующим образом:

 public void onClick(View v) { final int id = v.getId(); switch (id) { case R.id.button1: // your code for button1 here break; case R.id.button2: // your code for button2 here break; // even more buttons here } } 

Затем в вашем файле макета XML вы можете напрямую настроить прослушиватели кликов с помощью атрибута android:onClick :

 <Button android:id="@+id/button1" android:onClick="onClick" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button 1" /> 

Это самый чистый способ сделать это. Сегодня я использую его во всех моих проектах.

Просто объявите метод, например: если идентификатор кнопки ur – button1,

 button1.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View v) { // TODO Auto-generated method stub Toast.makeText(Context, "Hello", Toast.LENGTH_SHORT).show(); } }); 

Если вы хотите сделать imageview1 видимым, то в этом методе пишите:

 imageview1.setVisibility(ImageView.VISIBLE); 

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

Для работы необходимо реализовать интерфейс View.OnClickListener, и нам нужно переопределить функцию onClick. Я думаю, что это лучший подход по сравнению с использованием анонимного класса.

 package com.pointerunits.helloworld; import android.os.Bundle; import android.app.Activity; import android.util.Log; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class MainActivity extends Activity implements OnClickListener { private Button login; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); login = (Button)findViewById(R.id.loginbutton); login.setOnClickListener((OnClickListener) this); Log.i(DISPLAY_SERVICE, "Activity is created"); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public void onClick(View v) { Log.i(DISPLAY_SERVICE, "Button clicked : " + v.getId()); } } 

Снято с: http://developer.android.com/guide/topics/ui/ui-events.html

 // Create an anonymous implementation of OnClickListener private OnClickListener mCorkyListener = new OnClickListener() { public void onClick(View v) { // do something when the button is clicked } }; protected void onCreate(Bundle savedValues) { ... // Capture our button from layout Button button = (Button)findViewById(R.id.corky); // Register the onClick listener with the implementation above button.setOnClickListener(mCorkyListener); ... } 

Вы можете просто сделать это в методе onCreate () Activity. Например:

 public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //Assign the button to a variable Button button1 = (Button)findViewById(R.id.button1); //Assign the ImageView to a final variable, so that it's //accessible from an inner class ImageView imageView = (ImageView)findViewById(R.id.imageview1); //Assign it a new OnClickListener button1.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { imageView.setVisibility(View.VISIBLE); } } }