我正在使用CameraDemo-Layout作为如何使用相机片段正确地将按钮放在屏幕上的示例。
我正在尝试使用setCameraView()
/**
* Use this if you are overriding onCreateView() and are
* inflating a layout containing your CameraView, to tell
* the fragment the CameraView, so the fragment can help
* manage it. You do not need to call this if you are
* allowing the fragment to create its own CameraView
* instance.
*
* @param cameraView
* the CameraView from your inflated layout
*/
protected void setCameraView(CameraView cameraView) {
this.cameraView=cameraView;
}
但是,我不能使用它,因为它受到保护。我正在使用CameraDemo - Layout作为示例。我有自己的CustomCam,CustomCamFragment和CustomCamHost。
在onCreateView的CustomCamFragment中我试图使用setCameraView,但它未定义。这是错误的还是我应该遵循“你不需要称之为......”的规则,因为我不太明白那部分?
答案 0 :(得分:2)
但是,我不能使用它,因为它受到保护
它旨在从CameraFragment
的子类调用,并且protected
方法可用于子类。
我正在使用CameraDemo - Layout作为示例
您可以在the DemoCameraFragment
in that sample的setCameraView()
中看到onCreateView()
的来电:
@Override
public View onCreateView(LayoutInflater inflater,
ViewGroup container,
Bundle savedInstanceState) {
View content=inflater.inflate(R.layout.camera, container, false);
CameraView cameraView=(CameraView)content.findViewById(R.id.camera);
setCameraView(cameraView);
return(content);
}
我应该遵循“你不需要打电话给这个......”的规则,因为我不太明白那部分吗?
你正在自己创建一个CameraView
的实例(通过构造函数或布局膨胀),或者你不是。
如果你 创建了这样一个实例,和你想要使用CameraFragment
子类,那么该子类必须调用setCameraView()
,传入CameraView
实例。
如果您不创建此类实例,而是允许CameraFragment
的库存实现为您创建CameraView
,则无需致电{{1部分原因是您没有设置setCameraView()
。