Я видел этот SO вопрос и хочу реализовать принятый ответ для пользовательского представления.
Потому что в XML моего пользовательского представления он не распознает никакого метода для android:onClick
ни для каких кнопок! Интересно, это из-за пользовательского представления, может быть, мне следует просто использовать метод onClick в xml активности.
Можно ли установить метод для атрибута кнопки android:onClick
в пользовательском пользовательском представлении (которое расширяет LinearLayout), как показано ниже:
это мой пользовательский вид:
public class CustomEditText extends LinearLayout{
...
public void myMethod(View v) {
switch (v.getId()) {
case R.id.btn_down:
// do stuff;
break;
case R.id.btn_down_double:
// do stuff;
break;
}
}
}
и это мой xml-файл:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:focusable="true"
android:focusableInTouchMode="true"
android:orientation="horizontal">
<LinearLayout
android:layout_height="wrap_content"
android:layout_weight="wrap_content"
android:background="@drawable/bg_ctrl"
android:orientation="vertical">
<android.support.v7.widget.AppCompatButton
android:id="@+id/btn_down"
style="@style/CustomButton"
android:onClick="myMethod"
android:theme="@style/CustomButton.RED" />
<android.support.v7.widget.AppCompatButton
android:id="@+id/btn_down_double"
style="@style/CustomButton"
android:onClick="myMethod"
android:theme="@style/CustomButton.RED2" />
</LinearLayout>
</LinearLayout>
это ошибка:
FATAL EXCEPTION: main
java.lang.IllegalStateException: Could not find method myMethod(View) in a parent or ancestor Context for android:onClick attribute defined on view class android.support.v7.widget.AppCompatButton with id 'btn_down'
ОБНОВЛЕНИЕ:
родителем этого пользовательского представления является фрагмент, и я переместил myMethod()
в этот фрагмент, но ошибка все еще сохраняется :-|