質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

解決済

1回答

545閲覧

どの画面からでも”おわる”ボタンを押せば、一発でアプリを終了できるようにしたい。

aruko

総合スコア47

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

0クリップ

投稿2021/10/16 08:13

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}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jimbe

2021/10/16 08:30

画面間の遷移の関係がかなり複雑になってきているようですので、 Activity では無く Fragment を利用されたほうが良いように思います。 Fragment は言ってみれば レイアウトXML を切り替えるだけという感じですので、終わる場合は どの Fragment が表示中であっても土台である Acrtivity が終わればアプリが終わります。 また、他のご質問のように Activity 間で Intent でデータを渡したりは必要無くなります。
guest

回答1

0

ベストアンサー

投稿2021/10/17 10:52

jimbe

総合スコア12646

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

aruko

2021/10/18 08:53

jimbeさん、いつもいつもお世話になっております。 Fragmentを、andoroidstudioの本を見ながら取り組んでみましたが、やり方が分からない点が出てきたので、今回は、intentを使って画面遷移を行うことにしました。 ネットで調べると、いろいろで、エラーになるものや思うようにはならないものなどありましたが、これがいいかどうかはよく分かりませんが、 moveTaskToBack(true); でアプリを終わらせるという動作はできるようになりました。 少し進みましたが、また分からない点が出てきましたので、質問を立てたいと思います。
jimbe

2021/10/18 09:43

4画面をフラグメント化して各画面に画面遷移のボタンを付けたサンプルはもう手元にあるのですが、select_num や score, highscore (SharedPreferences) 等の処理部分を入れるかどうか、入れるならどう入れればサンプルとしてお役に立つかを決めかね、出せずにいます。入れすぎると Fragment の部分が相対的に小さくなるので、動きが分かり難くなりそうですし。 Fragment による遷移だけでもお見せできた方が良いでしょうか。
aruko

2021/10/18 10:23

はい、Fragmentで動かすプログラムの書き方は全く知りません。 本には、設定の仕方が書いてあったので、そのあたりをやってみただけです。 それをどのようにコードに表したらできるのか、サンプルをお持ちでしたら、見せていただきたいです。 現在のスマホアプリ第1号は7/10くらいまで進んできました。 新たなスマホアプリを作るときには、全体の構成を考えながらintent、Fragmentのどちらを使うのかを考えていきたいです。 よろしくお願いします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問