私のビューは、通常のウィジェットとサーフェスビューの集まりです。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
}
getSurface()
メソッドのAndroidドキュメントを見ると。これはそれが言う方法です:
表面オブジェクトへの直接アクセス。サーフェスは常に利用できるとは限りません。たとえば、SurfaceView を使用する場合、ビューがウィンドウ マネージャにアタッチされ、サーフェスの寸法と画面位置を決定するためにレイアウトが実行されるまで、ホルダーのサーフェスは作成されません。したがって、通常は、Surface がいつ使用可能になるかを調べるために Callback.surfaceCreated を実装する必要があります。
私はこれをあまり理解していませんが、何かが欠けていることは知っています。私のために説明し、Callback.surfaceCreated
手段とそれを実装する方法を教えてください。
ありがとう :)