【发布时间】:2011-11-14 16:51:13
【问题描述】:
我正在尝试使用线程连续拍照。问题是当我尝试创建预览时出现空指针异常。
private class CameraThread extends ImageView implements Runnable
{
...
public CameraThread(Context c)
{
super(c);
setContentView(R.layout.main);
setFocusable(true);
p = new Preview(c);
Log.d(TAG,"preview null:"+(p==null));
s = new SurfaceView(c);
counter = 0;
if(findViewById(R.id.preview)==null)
Log.d(TAG,"preview view is null");
((FrameLayout) findViewById(R.id.preview)).addView(p);
canvas = new Canvas();
t = new TextView(c);
captureButton = (Button) findViewById(R.id.captureButton);
captureButton.setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
running = true;
//new CaptureTask().execute();
}
});
clearButton = (Button) findViewById(R.id.clearButton);
clearButton.setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
running = false;
}
});
}
调试器将我指向这一行:
((FrameLayout) findViewById(R.id.preview)).addView(p);
我不知道为什么这是空的。这段代码在主要活动中都运行良好。 Preview 对象不会以 null 出现,但是 findViewById 返回一个 null 对象。
有什么想法吗?
编辑
线程在主活动中声明。我正在修改此代码,这最初是使用按钮捕获单个图片来实现的。我正在尝试不断地拍照。
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mCameraThread = new CameraThread(this);
setContentView(mCameraThread);
Thread thread = new Thread(mCameraThread);
thread.start();
Log.d(TAG,"onCreate done");
}
【问题讨论】:
标签: android multithreading nullpointerexception android-camera