如果我尝试这样做,则出现此运行时错误
AndroidRuntime: FATAL EXCEPTION: main
Process: com.chat.okitokichatchat, PID: 3365
java.lang.IllegalStateException: Could not find method onShowDialog(View) in a parent or ancestor Context for android:onClick attribute defined on view class
为什么我不能叫它?与onClick?以及为什么系统尝试从活动之类的父级调用它?而且我在XML属性中发现了警告“找不到声明转到”你能告诉我为什么吗?
我想您正在尝试在片段布局中使用android:onClick
,但这肯定会提高IllegalStateException
,这是您遇到的异常
java.lang.IllegalStateException: Could not find method onShowDialog(View) in a parent
or ancestor Context for android:onClick attribute defined on view class
从日志中,您尝试将android:onClick = onShowDialog
添加到片段布局视图之一。
并且会引发此错误,因为您只能在活动的布局中使用android:onClick
;因此它尝试在与此片段关联的活动中找到方法onShowDialog(View view)
,但不能。
因此,可能的解决方案:
不要对片段使用android:onClick
,只需以编程方式使用View.OnClickListener
,而不要调用视图的View.OnClickListener
。
如果您坚持要这样做,则可以在片段布局中向视图添加setOnClickListener()
,但是您需要在活动中定义该方法,如下所示
onShowDialog(View view)
然后在您的片段中创建public void onShowDialog(View view) {
Fragment f = getSupportFragmentManager().findFragmentByTag... // get the fragment
((MyFragment) f).onShowDialog();
}
。
注意:我假设您的片段名为onShowDialog()