当前位置: 首页 > 面试题库 >

扩展类时出现错误膨胀

王航
2023-03-14
问题内容

我正在尝试创建一个GhostSurfaceCameraView扩展的自定义视图SurfaceView。这是我的班级定义文件

GhostSurfaceCameraView.java

public class GhostSurfaceCameraView extends SurfaceView implements SurfaceHolder.Callback {
    SurfaceHolder mHolder;
    Camera mCamera;

    GhostSurfaceCameraView(Context context) {
        super(context);

        // Install a SurfaceHolder.Callback so we get notified when the
        // underlying surface is created and destroyed.
        mHolder = getHolder();
        mHolder.addCallback(this);
        mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
    }

    public void surfaceCreated(SurfaceHolder holder) {
        // The Surface has been created, acquire the camera and tell it where to draw.
        mCamera = Camera.open();
        try {
            mCamera.setPreviewDisplay(holder);
        } catch (IOException exception) {
            mCamera.release();
            mCamera = null;
            // TODO: add more exception handling logic here
        }
    }

    public void surfaceDestroyed(SurfaceHolder holder) {
        // Surface will be destroyed when we return, so stop the preview.
        // Because the CameraDevice object is not a shared resource, it's very
        // important to release it when the activity is paused.
        mCamera.stopPreview();
        mCamera.release();
        mCamera = null;
    }

    public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
        // Now that the size is known, set up the camera parameters and begin
        // the preview.
        Camera.Parameters parameters = mCamera.getParameters();
        parameters.setPreviewSize(w, h);
        parameters.set("orientation", "portrait");
        // parameters.setRotation(90); // API 5+
        mCamera.setParameters(parameters);
        mCamera.startPreview();
    }
}

这是在我的ghostviewscreen.xml中:

<com.alpenglow.androcap.GhostSurfaceCameraView android:id="@+id/ghostview_cameraview"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"/>

现在,我在活动中进行了:

protected void onCreate(Bundle savedInstanceState) {
    try {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.ghostviewscreen);
    }
}

setContentView()被调用时,抛出一个异常:

Binary XML file 09-17 22:47:01.958: ERROR/ERROR(337):
ERROR IN CODE:
android.view.InflateException: Binary
XML file line #14: Error inflating
class
com.alpenglow.androcap.GhostSurfaceCameraView

谁能告诉我为什么会出现此错误?谢谢。


问题答案:

我想我弄清楚了为什么这没用。当我应该为两个参数“ Context,AttributeSet”的情况提供构造函数时,我只为一个参数“
context”的情况提供了构造函数。我还需要使构造函数具有公共访问权限。这是我的解决方法:

public class GhostSurfaceCameraView extends SurfaceView implements SurfaceHolder.Callback {
        SurfaceHolder mHolder;
        Camera mCamera;

        public GhostSurfaceCameraView(Context context)
        {
            super(context);
            init();
        }
        public GhostSurfaceCameraView(Context context, AttributeSet attrs)
        {
            super(context, attrs);
            init();
        }
        public GhostSurfaceCameraView(Context context, AttributeSet attrs, int defStyle) {
            super(context, attrs, defStyle);
            init();
        }


 类似资料:
  • 问题内容: 您好,我是android dev和admob的新手。我正在尝试制作一个带有按钮,几个页面和底部的admob的简单测试应用程序。一切正常,直到我尝试实施admob。这是我的代码: HelloAndroid.java: main.xml: 您好android清单: logcat输出: 我正在使用GoogleAdMobAdsSdkAndroid-6.0.0。再次,我对此非常陌生,我尝试在多个

  • 问题内容: 错误日志: 10-26 12:22:33.144 26926-26926 /?E / AndroidRuntime:致命例外:主进程:ksmk.sahip.com.ecom,PID:26926 java.lang.RuntimeException:无法启动活动ComponentInfo {ksmk.sahip.com.ecom / ksmk.sahip.com.ecom.MainAct

  • 问题内容: 尝试运行我的应用程序时,我意外地遇到了以下错误: 下面是日志猫: 以下是Java代码: 下面是布局代码: 提前致谢 问题答案: 我通过在app / build.gradle上添加更新的cardview和appcompat解决了这一问题 然后重建项目

  • 我的问题有两个方面。要解决的错误是,当我使用自定义路由重用策略时,当我使用implements重写angular路由器类RouteReuseStrategy时,该策略不会被触发,当我使用extends关键字时,我会出现以下异常, 我的生成设置的详细信息: > 使用gulp编译 gulp.task(“compile”,()=>{let tsResult=gulp.src(“app/**/*.ts”)

  • 我试图将我的GLSurfaceView设置在xml布局以及其他UI元素上,并不断获得错误inflating类com.vi.cubo01。MyGLSurfaceView在LogCat. 以下是java代码: 以及xml:

  • 我在自定义控件中膨胀MvxImageView时遇到问题。 从我所做的研究中,我发现了几个嫌疑人 > < li >我是否应该将“如果”添加到“什么”中?(我看到这是关于android地图视图膨胀错误。 < li> 我创建的用户控件是不是都错了?我看到了一个使用SetContentView()而不是inflate的建议,因为它通过mvvmcross机制传递indlate请求,但在自定义视图中没有这样的