У меня с некоторыми действительно странными проблемами с моей кнопкой мыши на Android-клиенте! Я уже делал это несколько раз, я схожу с ума, не найдя решение (ни логическое объяснение) для этой ошибки.Click Listener в Android-кнопке не работает
ошибка Обработчик события для 2 кнопок в моей деятельности не выполняется. Нет ошибки, это просто не производительность обработчика во время выполнения. Это код для одной из кнопок:
btnNext = (Button) findViewById(R.listclient.btnnext);
btnNext.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
Toast.makeText(MyActivityClassName.this, "Flag 01", 1).show();
btnNext.setText("CLICKED!");
}
});
И это кнопка на макете XML:
<Button android:id="@+listclient/btnnext"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:clickable="true"
style="@style/Widget.TextViewInfo"
android:text="Next"
/>
Информация
- Существует также ImageButton внутри этой деятельности, этот образButton отлично работает с внутренним классом OnClickListener (точно так же, как этот).
- Я уже пытался сделать свой класс активности наследованием OnClickListener и установить его как кнопку для прослушивания кнопки без успеха.
- Я также создал класс внутри моего класса Activity и задал его как кнопку для прослушивания кнопок, и не имел успеха.
Я компиляции для Android 2.1 + Google API (SDK 7)
------------ ------------- EDITED ----
Если я кладу в мой код:
btnNext.performClick();
Это выполнено! Я сейчас даже сумасшедший! И кнопка на самом деле нажата, когда я касаюсь ее, я вижу кнопку «анимация», а клик регистрируется в LogCat.
Мое приложение действительно большое (около 50 видов деятельности), во многих случаях мы используем одно и то же имя кнопки в разных действиях. Чтобы предотвратить действительно большое количество ссылок виджетов с «id /», мы используем имя макета для разделения виджетов. Например, у меня есть «btnext» в других 2 макетах. Но я попробовал ваше предложение, оно все еще не работает. – IPValverde
Два решения: a) Либо префикс их по-другому, как 'android: id =" @ + id/listclient_btnnext "' (и затем использовать код R.id.listclient_bttnnext). Или б) Не заботьтесь и не используйте их повторно. 'findViewById()' выполняет поиск только в текущем виде hierachy (= видимый макет). Поэтому, если у вас есть 3 мероприятия с 3 различными макетами, это не имеет значения. Он найдет тот, который соответствует активной компоновке. (Вот почему 'findViewById()' всегда возвращает 'null', если вы вызываете его перед' setContentView() '. Пока нет представления hierachy) – user287351
Хммм ...+1 Я не знал об этом! Я думаю, что лучше использовать id /. Но, к сожалению, это не проблема, так как изменение ссылок не вызвало вызов clickEvent. – IPValverde