2012-07-09 8 views
1

메소드에 log.d를 넣었습니다.보고하지 않습니다. Game의 run() 메서드가 실행되었지만 계속 진행하기 전에 surfaceCreated 메서드가 반환 될 때까지 기다립니다.surfaceCreated가 호출되지 않았습니다.

주 : 게임은 스레드이며 으로 터치 서피스 뷰 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); 
} 
+0

귀하의 궁금한 점은 무엇입니까? – 0gravity

+0

이 코드가 TouchPanel을 처리하여 창에 연결되는 것을 막는 방법이 있습니까? 이 코드가 실행 된 후 surfaceCreated (SurfaceHolder holder) 메서드가 호출되지 않습니다. – Mark

답변

0

구현 확장합니다.

@id/touchPanel 

android:layout_height != 0 

및 표면

android:layout_width != 0 

가 서피스 뷰 SurfaceView에서 작성해야한다.

+0

이것을 설명해 주시겠습니까? 레이아웃 XML에 'android : layout_width! = 0'을 입력하면 구문 분석 오류가 발생합니다. – REJH

관련 문제