打开新片段时,取消绑定/关闭所有camera X组件


private Executor executor = Executors.newSingleThreadExecutor();
captureImage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
imageCapture.takePicture(executor, new ImageCapture.OnImageCapturedCallback() {
@SuppressLint("UnsafeExperimentalUsageError")
@Override
public void onCaptureSuccess(@NonNull ImageProxy image) {
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
cameraProvider.unbind(preview);
}
});
FragmentCroppImage fragment2 = new FragmentCroppImage();
FragmentManager fragmentManager =  getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.addToBackStack(null);
fragmentTransaction.replace(R.id.frameLHaupt, fragment2);
fragmentTransaction.commit();
}
@Override
public void onError(@NonNull ImageCaptureException exception) {
exception.printStackTrace();
}
});
}
});

我上面有一个简单的代码。当我拍照时,我打开新的片段。没问题,但问题是当我返回到cameraX片段(popbackback((时,会收到以下错误:Attempting to bind too many ImageCapture or VideoCapture instances

经过研究,我读到了以下答案:答案我需要像我做的那样解除camera X组件的绑定,但我研究了同样的错误。

所以现在我被卡住了。原因是什么?似乎我需要在图像捕获之前解除元素绑定?

我解决了这个问题:我只解除了预览的绑定。解开每个组件解决了问题:

getActivity().runOnUiThread(new Runnable() {
@Override
public void run() { cameraProvider.unbindAll(); }  
});

最新更新