以前の質問で同じようなことを教えていただいたのですが
今回はA→B→C→Dというアクティビティ遷移でCからDに遷移する際にほかのActivityを削除したいです。調べて見たところ参考サイトのように開くActivity以降のものしか閉じられないみたいです。
今回の場合だと以前の質問で教えていただいた内容が使えないみたいでこの場合どんな方法で実現できますでしょうか?
よろしくお願いします。

回答2件
あなたの回答
tips
プレビュー
Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。
Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。
Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。
Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。
Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。
Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。
0グッド
1クリップ
投稿2018/05/09 08:20
編集2018/05/09 08:20以前の質問で同じようなことを教えていただいたのですが
今回はA→B→C→Dというアクティビティ遷移でCからDに遷移する際にほかのActivityを削除したいです。調べて見たところ参考サイトのように開くActivity以降のものしか閉じられないみたいです。
今回の場合だと以前の質問で教えていただいた内容が使えないみたいでこの場合どんな方法で実現できますでしょうか?
よろしくお願いします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
BroadcastReceiverを使うとか
投稿2018/05/11 23:08
総合スコア29
0
ベストアンサー
その内容だと、Androidのスタック管理の機能だけでは解決できなさそうですね。
一つの案ですが、C→Dという処理のときに最初のActivity(A)を開くように記述して、その際に「これはCから戻ってきた処理である」ことがわかるフラグをセットして判別してみてはどうでしょうか。AのonCreate()では、そのフラグの内容によってsetContentView()でセットするレイアウトをAのものにするか、Dのものにするか振り分けます。
クラスは3画面分、レイアウトXMLは4画面分用意しておくということです。
CからAに戻るときには前回と同じようにIntent.FLAG_ACTIVITY_CLEAR_TOPをセットしておけばスタックの中身は破棄されますので、新たに開かれたA(画面内容はD)から戻ればアプリは即閉じられます。
ActivityA.java
public class ActivityA extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Intent intent = getIntent(); boolean d = intent.getBooleanExtra("D", false); // Cから戻ってきた処理であるか否かで振り分け if (d == false) { setContentView(R.layout.activity_a); // Aのレイアウトを描画 // Aを開くときの初期処理 } else { setContentView(R.layout.activity_d); // Dのレイアウトを描画 // Dを開く時の初期処理 } } }
ActivityC.java
// ここからDを開く処理 Intent intent = new Intent(this, ActivityA.class); intent.setFlags( Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP); intent.putExtra("D", true); // フラグをセット startActivity(intent);
ActivityA.javaの記述がちょっと複雑になってしまうのが問題でしょうかね。
他にもアイディアはあるかもしれないけど。
投稿2018/05/10 08:58
編集2018/05/10 09:08総合スコア6768
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。