TL; DR;Если Activity расширяет класс Abstract, который определяет метод, то почему этот метод не был "найден"?
Я наблюдаю за поведением в Android и не могу определить, является ли это ожидаемым результатом.или нет.
У меня есть активность с методами, которые не могут быть найдены методом AppCompatViewInflater.onClick
У меня есть активность, в ней есть кнопки, которые имеют android:onClick
атрибут («метод (представление представления)») как определено:
Имя метода в контексте этого представления, который вызывается при щелчке по представлению.Это имя должно соответствовать общедоступному методу, который принимает ровно один параметр типа View.Например, если вы укажете android: onClick = "sayHello", вы должны объявить публичный метод void sayHello (View v) вашего контекста (обычно вашей деятельности).
В моем примере яимеют следующие классы:
ParentExampleActivity
abstract class ParentExampleActivity extends AppCompatActivity{
abstract void reset(View view);
abstract void update(View view);
}
ExampleActivity
class ExampleActivity extends ParentExampleActivity {
public void reset(View view) {...}
public void update(View view) {...}
public void alter(View view) {...}
}
У меня есть следующий макет
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".ExampleActivity">
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="alter"
android:text="ALTER"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="update"
android:text="UPDATE"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="reset"
android:text="RESET"/>
</LinearLayout>
Но вызывает:
java.lang.IllegalStateException: Не удалось найти метод update (View) в родительском или родительском контексте для android: атрибут onClick, определенный в классе представления android.support.v7.widget.AppCompatButton
Но метод alter
работает как задумано ...
Как получилось?