如果我尝试这样做,则会出现此运行时错误
import cv2
import os
import glob
path = '../Desktop/Plot/'
#print(os.getcwd())
width = 640
height = 400
out = cv2.VideoWriter('project.avi', cv2.VideoWriter_fourcc(*'DIVX'), 15, (width,height))
for filename in sorted(glob.glob(path + '*.png')):
print(filename)
img = cv2.imread(filename)
img = cv2.resize(img, (width, height))
out.write(img)
out.release()
为什么我不能叫它?与onClick?以及为什么系统尝试从活动之类的父级调用它? 而且我在XML属性中发现了警告“找不到声明转到” 你能告诉我为什么吗?
答案 0 :(得分: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
而不是调用视图的setOnClickListener()
。
如果您坚持要这样做,则可以将onShowDialog(View view)
添加到片段布局的视图中,但是您需要在活动中定义该方法,如下所示:
public void onShowDialog(View view) {
Fragment f = getSupportFragmentManager().findFragmentByTag... // get the fragment
((MyFragment) f).onShowDialog();
}
然后在您的片段中创建onShowDialog()
。
注意:我假设您的片段名为MyFragment