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

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

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

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Q&A

解決済

1回答

4118閲覧

android 画面遷移 topに戻る方法

tunechan

総合スコア16

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

0グッド

0クリップ

投稿2020/04/10 05:19

androidstudio でandroidプログラムを作っています。初心者レベルです。iOSでは一応開発経験があります。

画面を遷移していき、途中途中で一気にTop画面に戻るようにもしたいのです。iOSでは、unwindSegueを実装すれば実現できました。
androidstudioでは、ナビゲーションエディターを使ってFragmentを貼り付けていく方法と、intentを使う方法があると理解しております。どちらを使うか思案中です。(出来れば視覚的にわかりやすいナビゲーションエディターを使いたい)
そこで質問です。

1。ナビゲーションエディターで遷移図を作り、Topに遷移させるようなプログラムを作り、これを実行して、(戻るボタンを使用せず)
Topへの遷移を繰り返した場合、スタックがたまり続け解放されず、よろしくないことが起きないのでしょうか。
(iOSでは、unwindSegueを使わず、戻るボタンも使用せず、Top画面に遷移することを繰り返すと、スタックが積み上がりよろしくない
と理解しております)
それとも、NapHostFragment が、チャンと管理してくれて、スタックのことは一切気にしなくても良いのでしょうか?

2.intentでのTopへの遷移は、Intent.FLAG_CLEAR_TOPフラグを立てて遷移すれば、スタックをクリアし、データインスタンスも破棄
されると考えてよろしいのでしょうか。

よく分かっていないのでよろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

  1. (何も対処しない状態で)戻るボタンを使わずにトップに遷移し続けた場合、ご指摘のとおり、スタックはたまり続けます。

Navigationにはそれを回避するためのパラメータとして popUpToInclusive が存在しますので、それをtrueにしてバックスタックをクリア出来ます。
やりたい事としては、こちらの記事の「Global Action」が近いと思いますので、参照ください。
https://qiita.com/jimmysharp/items/06f3157152fbc4cd5113#global-action

  1. おそらく Intent.FLAG_ACTIVITY_CLEAR_TOP のことだと思いますが、これは「指定したAcitivityより前(上)に積まれているスタックのAcitvityをクリアして起動させる」というのが正しいです。

全てのスタックをクリアしたい場合は Intent.FLAG_ACTIVITY_CLEAR_TASK を使います。こちらは用途に応じて使い分けてください。
データインスタンスも破棄されるのか?とのことですが、スタックが破棄された時に、破棄されたActivityが保持していたデータインスタンスも破棄されます。
参考:
https://blog.choilabo.com/20150216/505
https://qiita.com/jumperson/items/f856868181ef586db461

投稿2020/04/13 03:00

m-coder

総合スコア64

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

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

tunechan

2020/04/14 00:00

m-coder さん、初心者の質問に丁寧に答えて下さり感謝です。教えて頂いたurlも参考にしながら進めていきます。また、質問するかもしれませんが、よろしくお願いします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問