メソッドにlog.dを入れましたが、レポートされません。ゲームのrun()メソッドが実行されますが、続行する前に、surfaceCreatedメソッドが戻るのを防御的に待ちます。
注:ゲームはスレッドであり、TouchPanelはSurfaceViewを拡張してSurfaceHolder.Callbackを実装します
private final void runGame() {
savedPos = 0;
resumeGame();
touchPanel = (TouchPanel)findViewById(com.mysite.mygame.R.id.touchPanel);
touchPanel.setMinimumHeight(displayWidth);
touchPanel.setParams(this, writeLock, gemSize9, gemSize12, marg);
textUpdate = new TextUpdate(this, d);
gm = new Game(tok9, tok12, m, d, this, textHandler, textUpdate, touchPanel, marg, gemSize9, gemSize12, readLock, writeLock);
initBitmaps();
gm.start();
}
private final void resumeGame() {
loadBGMusic();
layout = Layout.GAME;
setContentView(com.mysite.mygame.R.layout.game);
writeLock.lock(); try { paused = false; } finally { writeLock.unlock(); }
}
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/rel"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/backrepeat"
android:keepScreenOn="true"
>
<com.mysite.mygame.TouchPanel
android:id="@+id/touchPanel"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:clickable="true"
android:focusableInTouchMode="true"
/>
</RelativeLayout>
public TouchPanel(Context context, AttributeSet attrs) {
super(context, attrs);
getHolder().addCallback(this);
}