android studioでゲーム作成して、
TitleActivity⇒MainActivity⇒ResultActivity⇒RankingActivityの4つの画面を設定しています。
それぞれ画面遷移をするために、下の図のようにボタンを作り、画面遷移していきます。
遷移するときに、Main画面以外はすべて自分の画面をfinish()して画面遷移していきます。
Main画面だけは遷移しても残しています。
それぞれの画面で、"おわる"ボタンを押せば、アプリが終わるようにしたいですが、
Ranking画面では、"おわる"ボタンを押すと、Main画面が表れてしまいます。
Result画面では、一発でアプリを終わらせることができています。
知りたいのは、Ranking画面で"おわる"ボタンを押せば、一発でアプリが終わるようにすることです。
いろいろ試してみましたが、データ受け渡しの知識が足りないため、やっぱり書き方が分からないです。
教えていただければありがたいです。
よろしくお願いします。
MainActivityでは、
java
1private ActivityResultLauncher<Intent> startForResult = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> { 2 switch (result.getResultCode()){ 3 case Activity.RESULT_OK: 4 Log.d(TAG,"ActivityResultLauncher result="+result); 5 break; 6 case ResultActivity.RESULT_OWARU: 7 Log.d(TAG,"ActivityResultLaundher OWARU"); 8 finish(); 9 break; 10 } 11-------------------------------------------------------------------------------- 12}else if (view.getId() == R.id.bt5) {//Result画面へ 13 startForResult.launch(new Intent(MainActivity.this,ResultActivity.class) 14 .putExtra(ResultActivity.SCORE,score)); 15 }
ResultActivityでは、
java
1public static final String SCORE="SCORE"; 2public static final String SELECT_NUM="SELECT_NUM"; 3public static final int RESULT_OWARU = Activity.RESULT_FIRST_USER; 4public static final String SHARED_NAME="GAME_DATA"; 5public static final String HIGH_SCORE="HIGH_SCORE"; 6------------------------------------------------------------------------------------- 7public void onClick(View view) { 8 if (view.getId() == R.id.bt6) {//おわる 9 setResult(RESULT_OWARU,null); 10 finish(); 11 } else if (view.getId() == R.id.bt7) {//Title画面へ 12 Intent intent=new Intent(getApplication(), TitleActivity.class); 13 startActivity(intent); 14 finish(); 15 }else if (view.getId() == R.id.bt8) {//Ranking画面へ 16 Intent intent = new Intent(getApplication(),RankingActivity.class); 17 intent.putExtra(SELECT_NUM, select_num); 18 intent.putExtra(HIGH_SCORE, high_score); 19 startActivity(intent); 20 finish(); 21 } 22}
RankingActivityでは、
java
1public void onClick(View view) { 2 if (view.getId() == R.id.bt9) {//おわる 3 setResult(RESULT_OWARU,null); 4 finish(); 5 } else if (view.getId() == R.id.bt10) {//Title画面へ 6 Intent intent=new Intent(getApplication(), TitleActivity.class); 7 startActivity(intent); 8 finish(); 9 } 10}
回答1件
あなたの回答
tips
プレビュー