Как превратить что-либо в кнопку в Android

#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 реализации).