我正在目睹 Android 中的一种行为,我无法判断它是否是预期的结果。
我有一个带有方法的活动,该AppCompatViewInflater.onClick
方法无法找到
我有一个 Activity,在其中,我有 Button(s) 具有定义的android:onClick
属性(“方法(视图视图)”):
单击视图时要在此视图的上下文中调用的方法的名称。此名称必须对应于仅采用一个 View 类型参数的公共方法。例如,如果您指定 android:onClick="sayHello",则必须声明您的上下文(通常是您的 Activity)的 public void sayHello(View v) 方法。
在我的示例中,我有以下类:
父示例活动
abstract class ParentExampleActivity extends AppCompatActivity{
abstract void reset(View view);
abstract void update(View view);
}
示例活动
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:在视图类 android.support.v7.widget.AppCompatButton 上定义的 android:onClick 属性的父级或祖先上下文中找不到方法 update(View)
但是,该alter方法正在按预期工作......
怎么来的?
慕慕森
神不在的星期二
相关分类