前提・実現したいこと・問題
いつもお世話になっております。
現在AndroidStudioで簡単なゲームを作っています。
①スタート画面↓
②スタートボタンを押す↓
③プレイ画面↓
④30秒経つ↓
⑤リトライ画面↓
⑥リトライボタンを押す↓
⑦スタート画面に戻る
という流れをまず作りたく、下記のようにコードを書きました。
そうすると、⑤までは問題ないのですが、
表示されているリトライボタンを押しても反応がなく、スタート画面に戻れません。
なぜでしょうか。
ちなみに、上の流れで、
①→②→⑤→⑥→⑦と、プレイ画面を表示させない流れで書くと、
リトライボタンも押せて、スタート画面とリトライ画面を行き来することができます。
よろしくお願いいたします。
エラーメッセージ
エラーログには以下のように出ています。
06-15 15:04:30.757 6703-6703/? E/Zygote: isWhitelistProcess - Process is Whitelisted 06-15 15:04:30.758 6703-6703/? E/libpersona: scanKnoxPersonas Couldn't open the File - /data/system/users/0/personalist.xml - No such file or directory
該当のソースコード
Java
1package com.hachiya.candyzombie; 2 3import android.app.Activity; 4import android.content.pm.ActivityInfo; 5import android.os.Bundle; 6import android.os.Handler; 7import android.view.View; 8import android.widget.ImageButton; 9 10import java.util.Timer; 11import java.util.TimerTask; 12 13public class MainActivity extends Activity { 14 15 private View view; 16 17 //カウントダウンのための変数 18 private Handler handlerA = new Handler(); 19 private final static long MSEC_A = 30; 20 private static final long TIME = 30; 21 private long remainedTime_A; 22 private long gameStarted; 23 24 @Override 25 protected void onCreate(Bundle savedInstanceState) { 26 super.onCreate(savedInstanceState); 27 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 28 29 setScreenStart(); 30 } 31 32 //スタート画面 33 public void setScreenStart() { 34 setContentView(R.layout.activity_screenstart); 35 36 ImageButton startButton = findViewById(R.id.start_button); 37 38 startButton.setOnClickListener(new View.OnClickListener() { 39 @Override 40 public void onClick(View v) { 41 42 gameStarted = System.currentTimeMillis(); 43 44 setScreenPlay(); 45 } 46 }); 47 } 48 49 //リトライ画面 50 public void setScreenRetry() { 51 setContentView(R.layout.activity_screenretry); 52 53 ImageButton retryButton = findViewById(R.id.retry_button); 54 55 retryButton.setOnClickListener(new View.OnClickListener() { 56 @Override 57 public void onClick(View v) { 58 setScreenStart(); 59 } 60 }); 61 } 62 63 //プレイ画面 64 public void setScreenPlay() { 65 66 view = new screenPlay(this); 67 setContentView(view); 68 69 //30秒経ったらリトライ画面へ移る 70 Timer timerA = new Timer(false); 71 timerA.schedule(new TimerTask() { 72 public void run() { 73 handlerA.post(new Runnable() { 74 public void run() { 75 remainedTime_A = TIME - (System.currentTimeMillis() - gameStarted) / 1000; 76 if(remainedTime_A < 0){ 77 setScreenRetry(); 78 return; 79 } 80 } 81 }); 82 } 83 }, 0, MSEC_A); 84 } 85}
Java
1package com.hachiya.candyzombie; 2 3import android.content.Context; 4import android.content.res.Resources; 5import android.graphics.Bitmap; 6import android.graphics.BitmapFactory; 7import android.graphics.Canvas; 8import android.graphics.Color; 9import android.graphics.Paint; 10import android.view.View; 11 12public class screenPlay extends View { 13 14 private Bitmap playBgImg1; 15 private Bitmap playBgImg1_1; 16 17 Paint timePaint = new Paint(); 18 19 public screenPlay(Context context){ 20 super(context); 21 22 Resources res = this.getContext().getResources(); 23 24 playBgImg1 = BitmapFactory.decodeResource(res, R.drawable.bgimg3); 25 26 timePaint.setColor(Color.BLUE); 27 timePaint.setTextSize(64); 28 timePaint.setAntiAlias(true); 29 } 30 31 @Override 32 public void onDraw(Canvas canvas){ 33 34 playBgImg1_1 = Bitmap.createScaledBitmap(playBgImg1, canvas.getWidth(), canvas.getHeight(), true); 35 36 playScene(canvas); 37 } 38 39 //プレイ画面 40 public void playScene(Canvas canvas){ 41 canvas.drawBitmap(playBgImg1_1, 0, 0, null); 42 } 43}
試したこと
補足情報(FW/ツールのバージョンなど)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/06/17 05:04