当我将它传递给另一个类构造函数时,Java android surfaceview变为null

时间:2013-07-08 18:40:13

标签: java android nullpointerexception surfaceview

我有3个班级,其中一个是活动。 内部活动oncreate

Camera camera = Camera.open();    
MovementDetector detector = new MovementDetector(this, camera);
            if(detector == null)Log.d(null, "detector null in activity");
            MovementResult result = new MovementResult(this, detector);

Inside MovementResult

public class MovementResult extends SurfaceView implements SurfaceHolder.Callback, Runnable {

        SurfaceHolder holder;
        MovementDetector detector;

        public MovementResult(Context context, MovementDetector detectorview) {
            super(context);
            holder = getHolder();
            holder.addCallback(this);
            detectorview = detector;
            if(detector == null)Log.d(null, "detector null in constructor");
            if(detectorview == null)Log.d(null, "detectorview null in constructor");
        }

经过漫长而痛苦的搜索(因为我没有检查,因为我看不出原因......)在课堂上运行的MovementResult检测器为空。两个日志都显示在logcat中,您可以在构造函数中看到,但是活动中的日志不会显示。

所以我在一个非null的活动中有一个对象。然后我将它传递给另一个构造函数,它在那里变为null。可能是什么原因?

1 个答案:

答案 0 :(得分:2)

detectorview是传递的参数,detector是null成员。

您似乎想将探测器设置为探测器视图,而是将探测器视图设置为(空)探测器,这肯定不是您想要的。