使用自定义 View 或 SurfaceView 时如何避免 NullPointerException

Posted

技术标签:

【中文标题】使用自定义 View 或 SurfaceView 时如何避免 NullPointerException【英文标题】:How to avoid NullPointerException when using custom Views or SurfaceViews 【发布时间】:2010-11-02 10:04:08 【问题描述】:

我创建了一个名为CaptureView 的自定义SurfaceView 并尝试将其添加到main.xml 文件中:

<dev.recorder.client.CaptureView android:layout_ android:layout_ android:id="@+id/capturePreview"/>

应用程序似乎工作正常,但如果我在 Eclipse 中从 main.xml 选项卡切换到布局,则会出现文本 NullPointerException 而不是布局预览。

在 Activity 中,我通过以下方式绑定了控件:

setContentView(R.layout.main);

    bindControls();

private void bindControls()

    videoPreview = (CaptureView)findViewById(R.id.capturePreview);

    txtstatus = (TextView)findViewById(R.id.txtMode);
    txtTimer = (TextView)findViewById(R.id.txtTime);

有人知道这个问题怎么解决吗?

【问题讨论】:

那么问题是它没有在 Eclipse 中正确地为您提供预览吗? 【参考方案1】:

确保您在 onFinishInflate 中初始化视图,而不是在构造函数中。 布局预览代码可能会通过不同的代码路径初始化您的控件。

【讨论】:

以上是关于使用自定义 View 或 SurfaceView 时如何避免 NullPointerException的主要内容,如果未能解决你的问题,请参考以下文章

讲讲Android为自定义view提供的SurfaceView

讲讲Android为自定义view提供的SurfaceView

SurfaceView的补充

Android 中自定义ViewGroup实现流式布局的效果

SurfaceView的使用

View第一部分自定义View 简单介绍及使用