[Solved-2 Solutions] Error inflating when extending a class



Error Description:

    • When trying to create a custom view GhostSurfaceCameraView that extends SurfaceView. Here's the class definition file:
    • GhostSurfaceCameraView.java
    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();
        }
    }
    
    click below button to copy the code. By - Java tutorial - team
    • And this is in the ghostviewscreen.xml:
    <com.alpenglow.androcap.GhostSurfaceCameraView android:id="@+id/ghostview_cameraview"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"/>
    
    click below button to copy the code. By - Java tutorial - team
    • Now in the activity we make:
    protected void onCreate(Bundle savedInstanceState) {
        try {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.ghostviewscreen);
        }
    }
    
    click below button to copy the code. By - Java tutorial - team
    • When setContentView() gets called, an exception is thrown:
    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
    
    
    click below button to copy the code. By - Java tutorial - team

    Solution 1:

      • Here's the fix:
      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();
              }
      
      click below button to copy the code. By - Java tutorial - team

      Solution 2:

        • Another possible cause of the "Error inflating class" message could be misspelling the full package name where it's specified in XML:
        <com.alpenglow.androcap.GhostSurfaceCameraView android:id="@+id/ghostview_cameraview"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"/>
        
        click below button to copy the code. By - Java tutorial - team
        • Opening your layout XML file in the Eclipse XML editor should highlight this problem.

        Related Searches to Error inflating when extending a class