2011-04-05 6 views
0

Im 현재 SurfaceView를 확장하는 클래스를 사용하여 LunarLander와 비슷한 스레드를 그려야하는 작은 게임을 개발하려고합니다. 그러나 내가 XML에서 한 콘텐츠보기를 변경하고 싶습니다, 내가 그리기 하나는 내가 setContentView에 의해 contentview 변경됩니다 활동 클래스에있는 내 surfaceview 클래스에서 메서드를 호출하려고, 내가 RuntimeException 얻을 :활동 클래스에서 비 정적 메소드 액세스?

"Can't create handler inside thread that has not called Looper.prepare()" 

아마 내가 메신저 안드로이드와 자바 개발에 새로운 것이지만 나는 정적 메서드가 아닌 다른 방법으로 작동 할 때 왜 작동하는지 이해하지 못합니까?

(활동을 확장 내 시작의 메소드)

public void simulationDone() 
{ 
    ..... 
} 

new Start().simulationDone(); 

답변

2

문제의 커플 (액세스하려고) :

먼저 호출하지 않아야을 setContentView 여러 번.

두 번째로, 표면보기에는 활동에 대한 참조가 필요합니다. 나는 활동과 함께 의사 소통을해야하는 내 의견에 청취자을 정의하는 경향이있다. MySurfaceView라고 정의 SurfaceView에서 :

public static interface Listener { 
    public void simulationDone(); 
} 

private Listener listener; 

public void setListener(Listener listener) { 
    this.listener = listener; 
} 

그런 다음 당신은 당신의 표면보기를 만들 때 활동이 MySurfaceView.Listener를 구현하고 mySurfaceView.setListener(this)를 호출합니다.

+0

감사합니다. 매우 도움이되었습니다. – Henrik

관련 문제