Android:无法将LifeCycleOwner强制转换为CamerX预览代码中的活动错误

Android:无法将LifeCycleOwner强制转换为CamerX预览代码中的活动错误,android,android-lifecycle,android-camera2,android-camerax,Android,Android Lifecycle,Android Camera2,Android Camerax,我正在尝试使用相机API在textureView上显示相机预览。。。 java中几乎没有任何与cameraX api相关的教程,因此很难理解api是如何工作的……代码给了我一个运行时异常,其中指出 “无法将活动强制转换为lifeCycleowner” 创建自定义生命周期 //lifecycle for camera CustomLifecycle lifecycle=new CustomLifecycle(); lifecycle.doOnResume();

我正在尝试使用相机API在textureView上显示相机预览。。。 java中几乎没有任何与cameraX api相关的教程,因此很难理解api是如何工作的……代码给了我一个运行时异常,其中指出

“无法将活动强制转换为lifeCycleowner”


创建自定义生命周期

   //lifecycle for camera
        CustomLifecycle lifecycle=new CustomLifecycle();
        lifecycle.doOnResume();
        lifecycle.doOnStart();
        CameraX.bindToLifecycle(lifecycle, preview,imageCapture);


    public class CustomLifecycle implements LifecycleOwner {

        private LifecycleRegistry mLifecycleRegistry;
         CustomLifecycle() {
            mLifecycleRegistry = new LifecycleRegistry(this);
            mLifecycleRegistry.markState(Lifecycle.State.CREATED);
        }

        void doOnResume() {
            mLifecycleRegistry.markState(Lifecycle.State.RESUMED);
        }

        void doOnStart() {
            mLifecycleRegistry.markState(Lifecycle.State.STARTED);
        }

        @NonNull
        public Lifecycle getLifecycle() {
            return mLifecycleRegistry;
        }
    }

camerax的官方代码实验室已经建议您必须更新appcompat依赖项:

如果Android Studio抱怨“this”不是LifecycleOwner,请尝试重建项目或将appcompat依赖项更新到1.1.0或更高版本

查看以下链接:

我发布的代码运行良好,现在我犯了在活动中实现它的错误。它必须在一个片段中实现:|

这个
需要继承自
FragmentActivity
,例如通过扩展
AppCompatActivity
。如果此处只有一个普通的
活动
,则该操作无效。您的意思是
不能将活动强制转换为LifeCycleOwner
而不是另一个相反的对象吗?请添加完整的代码。
   //lifecycle for camera
        CustomLifecycle lifecycle=new CustomLifecycle();
        lifecycle.doOnResume();
        lifecycle.doOnStart();
        CameraX.bindToLifecycle(lifecycle, preview,imageCapture);


    public class CustomLifecycle implements LifecycleOwner {

        private LifecycleRegistry mLifecycleRegistry;
         CustomLifecycle() {
            mLifecycleRegistry = new LifecycleRegistry(this);
            mLifecycleRegistry.markState(Lifecycle.State.CREATED);
        }

        void doOnResume() {
            mLifecycleRegistry.markState(Lifecycle.State.RESUMED);
        }

        void doOnStart() {
            mLifecycleRegistry.markState(Lifecycle.State.STARTED);
        }

        @NonNull
        public Lifecycle getLifecycle() {
            return mLifecycleRegistry;
        }
    }