カスタム Android SurfaceView を実装しましたが、コールバックを追加するとエラーが発生します。
クラスのコードは次のSurfaceView
とおりです。
public class AndroidSurface extends SurfaceView {
public SurfaceHolder holder;
public AndroidSurface(Context context, AttributeSet attrs) {
super(context, attrs);
holder = getHolder();
holder.addCallback(new SurfaceHolder.Callback() {
public void surfaceChanged(SurfaceHolder holder, int format,
int width, int height) {
// TODO Auto-generated method stub
}
public void surfaceCreated(SurfaceHolder holder) {
// TODO Auto-generated method stub
}
public void surfaceDestroyed(SurfaceHolder holder) {
// TODO Auto-generated method stub
}
});
}
}
layout.xml
たとえば、このビューを に追加すると、次のようになります。
<com.app.AndroidSurface
android:id="@+id/surfaceView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/rightBtn"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_below="@+id/textView1" />
Graphical Layout
show in : インスタンス化に失敗したときにエラーが発生します。(プラグイン: com.android.ide.eclipse.adt) このプロジェクトを実行すると、例外が発生します。LogCat で表示すると、Java Null Point Exception が表示されます。
奇妙なことに、削除してholder.addCallback(new SurfaceHolder.Callback() {...
もエラーは発生しません。
これも奇妙に見えます。これを修正する方法を教えてください。
@ Edited : I の場合getHolder
、それが返されないsurface holder
ため、ホルダーが null であるため、問題はありません。理由はわかりません。
ありがとう :)