В следующем фрагменте показано, как OpenCV4Android инициализируется в Activity
, например. в это пример приложения, но мне нужно сделать это внутри Fragment
(потому что мой JavaCameraView
находится в моем фрагменте).
Я бы сделал это точно так же, как это было сделано в Activity
, т.е. я бы инициализировал baseLoaderCallback
непосредственно внутри тела класса (вне тела любого метода), но таким образом код инициализации (4-й оператор в следующем фрагменте) будет выполнен, как только поскольку создается экземпляр Fragment
.
Как мы видим, конструктор BaseLoaderCallback
принимает контекст приложения в качестве аргумента, и я не могу вызвать getActivity()
до вызова onActivityCreated()
, потому что до onActivityCreated()
конструктор getActivity()
может возвращать значение null.
public class AnActivity extends Activity implements CvCameraViewListener2 {
...
private JavaCameraView javaCameraView;
...
private CameraBridgeViewBase cameraBridgeViewBase;
BaseLoaderCallback baseLoaderCallback = new BaseLoaderCallback(getActivity().getApplicationContext()) {
@Override
public void onManagerConnected(int status) {
switch (status) {
case LoaderCallbackInterface.SUCCESS:
cameraBridgeViewBase.enableView();
break;
default:
super.onManagerConnected(status);
break;
}
}
};
...
//SOME LIFE CYCLE CALL BACK METHODS
@Override
public void onResume() {
super.onResume();
OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_3, getActivity().getApplicationContext(),
baseLoaderCallback);
}
...
}