我的视图是一堆普通的小部件和一个表面视图。我不知道为什么在我得到surfaceholder
SurfaceView 并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()
方法时。它是这样说的:
直接访问表面对象。Surface 可能并不总是可用——例如,当使用 SurfaceView 时,在视图附加到窗口管理器并执行布局以确定 Surface 的尺寸和屏幕位置之前,不会创建持有者的 Surface。因此,您通常需要实现 Callback.surfaceCreated 以了解 Surface 何时可用。
我不太了解这一点,但我知道我错过了一些东西。请为我解释一下,并告诉我Callback.surfaceCreated
手段,以及如何实施?
谢谢 :)