我有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。可能是什么原因?
答案 0 :(得分:2)
detectorview是传递的参数,detector是null成员。
您似乎想将探测器设置为探测器视图,而是将探测器视图设置为(空)探测器,这肯定不是您想要的。