为什么我不能在Android中调用片段XML的onClick属性

问题描述 投票:0回答:1

如果我尝试这样做,则出现此运行时错误

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 xml fragment
1个回答
0
投票

我想您正在尝试在片段布局中使用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()

© www.soinside.com 2019 - 2024. All rights reserved.