在Android活动中设置布局会导致应用程序崩溃

时间:2013-12-24 05:29:06

标签: java android opencv

我正在使用OpenCV开发一个Android应用程序。在我的相机活动中,当我设置布局时,应用程序崩溃。 我不知道为什么我的应用程序表现异常。它随机崩溃。首先在实例化ScanCameraPreview时出现错误,但现在,它在设置布局时崩溃。

CameraActivity.java

public CameraActivity() 
{
    Log.i(TAG, "Instantiated new " + this.getClass());
}

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) 
{
    Log.i(TAG, "called onCreate");
    super.onCreate(savedInstanceState);
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
    setContentView(R.layout.activity_camera);   // Crashes here

    mOpenCvCameraView = (ScanCameraPreview) findViewById(R.id.camera_surface_view);
    mOpenCvCameraView.setVisibility(SurfaceView.VISIBLE);
    mOpenCvCameraView.setCvCameraViewListener(this);
    //mOpenCvCameraView.setCameraRotation();
    ......
}

这是我的布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/camera_activity"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".CameraActivity" >


<com.example.androiddms.ScanCameraPreview
    android:id="@+id/camera_surface_view"
    android:layout_width="match_parent"
    android:visibility="gone"
    android:layout_height="match_parent" />

</LinearLayout>

这是我的自定义相机视图

public class ScanCameraPreview extends JavaCameraView 
{
    private static final String TAG = "AndroidDms::ScanCameraView";

    public ScanCameraPreview(Context context, AttributeSet attrs) 
    {
        super(context, attrs);
        Log.d(this.toString(), "Starting camera preview");
        //mCamera.getParameters().get
    }
}

请帮帮我。我仔细地调试了它,它在setcontentview崩溃了。 谢谢你的时间。

这是我的logcat enter image description here

1 个答案:

答案 0 :(得分:0)

尝试覆盖ScanCameraPreview的所有三个构造函数

public class ScanCameraPreview extends JavaCameraView 
{
    private static final String TAG = "AndroidDms::ScanCameraView";

    public ScanCameraPreview(Context context, AttributeSet attrs) 
    {
        super(context, attrs);
        Log.d(this.toString(), "Starting camera preview");
        //mCamera.getParameters().get
    }

    public ScanCameraPreview(Context context) 
    {
        super(context);
        Log.d(this.toString(), "Starting camera preview");
        //mCamera.getParameters().get
    }


    public ScanCameraPreview(Context context, AttributeSet attrs,int style) 
    {
        super(context, attrs,style);
        Log.d(this.toString(), "Starting camera preview");
        //mCamera.getParameters().get
    }
}