我的视图包含一组普通的小部件和一个SurfaceView。我不知道为什么在获取SurfaceView的surfaceholder并在holder上再次使用getSurface()后,总是返回null。
这是我的示例代码:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.view);
}
@Override
public void onResume() {
super.onResume();
surface = (SurfaceView) findViewById(R.id.surfaceView);
this.holder = surface.getHolder();
if (holder.getSurface().isValid()){ // get surface again
Log.i("Notice","Surface holder is valid");
}
else
Log.i("Notice","Surface holder ISNOT valid"); //Always receive this
}
当我查看 Android 文档中的 `getSurface()` 方法时,文档如下所示:
`getSurface()` 方法可以直接访问 surface 对象。然而,surface 并不总是可用的。例如,在使用 SurfaceView 时,只有当视图已经附加到窗口管理器并执行了布局以确定 Surface 的尺寸和屏幕位置后,holder 的 Surface 才会被创建。因此,通常需要实现 `Callback.surfaceCreated` 方法来判断何时 Surface 可供使用。
我知道我可能错过了某些东西,但我不太理解这段话。请为我解释一下,并告诉我 `Callback.surfaceCreated` 是什么意思,以及如何实现它?
谢谢 :)