#android #button #onclicklistener #tablerow #nested
#Android #кнопка #onclicklistener #tablerow #вложенный
Вопрос:
Мне нужен способ превратить TableRow
в Button
в Android. Я попытался настроить onCLickListener()
и я попытался вложить TableRow
внутри Button
, но это просто приводит к сбою приложения.
Редактировать:
Я удалил android:onCLick=»onClick», как вы сказали, и это избавило от сбоя, но ничего не происходит, когда я нажимаю на строку таблицы.
Мой код:
tableRow1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent openInfoTR1 = new Intent("android.intent.action.MENU");
fromTableRow = 1;
startActivity(openInfoTR1);
System.out.println("Confirmed click");
}
});
<TableLayout
android:id="@ id/tlDisplayTable"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TableRow
android:id="@ id/trTableRow1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:weightSum="100"
android:visibility="invisible"
android:clickable="true">
<TextView
android:id="@ id/tvDisplayedText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20dp"
android:padding="5dp"
android:textAppearance="?android:attr/textAppearanceMedium"
android:layout_weight="5"/>
</TableRow>
</TableLayout>
Комментарии:
1. Не могли бы вы также опубликовать свой код, logcat и xml?
2. опубликуйте свой код и logcat, пожалуйста?
3. Поскольку вы опубликовали код и журнал cat, я расширил свой ответ исправлением вашей проблемы.
Ответ №1:
К каждому элементу, который наследуется от View
, может быть прикреплен OnClickListener
. Нет необходимости оборачивать это внутри кнопки.
Однако вам придется посмотреть, как события распространяются по вашему макету. Например, если у вас есть интерактивные элементы внутри вашей TableRow, события нажатия обычно будут использоваться этими элементами и не попадут к вам OnClickListener
. Существуют разные способы перехватить или изменить это поведение, но вам придется опубликовать свой код, чтобы получить более конкретную помощь.
Редактировать:
Исключение в вашем приложении возникает из строки android:onClick="onClick"
в вашем файле макета. Поскольку вы программно настраиваете прослушиватель onClick, вам это не нужно. android:onClick="onClick"
это ярлык, который ожидал бы метод void onClick(View view)
непосредственно в вашем Activity (а не, как у вас, как часть OnClickListener
реализации).