게임 내에 시간 카운터를 삽입하고 싶습니다. 시간이 0이면 사용자에게 시간이 초과되었음을 알리고 이전 활동으로 돌아가는 AlertDialog가 있습니다.AlertDialog가있는 Looper.prepare()
public void showTime(){
time--;
Log.i("GameView time", "" + time);
if (time <= 0){
Log.i("gameview time","time out");
gameTimer.setRunning(false);
AlertDialog.Builder alt_bld = new AlertDialog.Builder(this.getContext());
AlertDialog alert = alt_bld.create();
alert.setTitle("Time is out. You lose.");
alert.setButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
main.onBackPressed();
}});
alert.show();
}
}
GameTimer 클래스는 스레드입니다 : 다음은 방법이다 (그것은 서피스 뷰 SurfaceView를 확장하는 클래스 내부)
public class GameTimer extends Thread{
private GameView gameView;
private boolean run;
public GameTimer(GameView gameView){
this.gameView = gameView;
}
public void setRunning(boolean value){
this.run = value;
}
public void run(){
Looper.prepare();
while (run){
try {
gameView.showTime();
sleep(1000);
} catch (Exception e){
e.printStackTrace();
}
}
Looper.loop();
}
}
가에 AlertDialog가 나타나지만 응용 프로그램 충돌 뷰 계층 구조를 만든 원래 스레드 만보기를 변경할 수 있습니다. 그러나 이것은 창조 한 실로 ... 문제는 어디에 있습니까?
이 시도했습니다 ... 불행하게도 아무것도 :( – MMMM
스레드 http://developer.android.com/reference/android/os/Looper.html 내부 루퍼를 사용하는 방법을 여기에서 볼을 변경하지 않고이 보인다 당신의 GameTimer는 퍼펙트 한 퍼블릭 클래스이고, Activity의 내부 클래스가 아니기 때문에, runOnUiThread 나 Handler 어느 쪽도 작동하지 않습니다. 당신이 콜백을 구현한다고 말했죠. 당신은 지금 이해했습니다 – Yuvi
고마워 :) 이제 괜찮아 – MMMM