AndroidのActivityの遷移コントロールについて(自分用のメモです)
通常Activityは下図の様に
┏━━━━━┓
┃Activity-1┃
┗━━━━━┛
↓ ↑
┏━━━━━┓
┃Activity-2┃
┗━━━━━┛
↓ ↑
┏━━━━━┓
┃Activity-3┃
┗━━━━━┛
↓ ↑
┏━━━━━┓
┃Activity-4┃
┗━━━━━┛
とスタック、ポップの関係で遷移する。
ここで下図の様にActivity-1に戻りたくない場合
┏━━━━━┓
┃Activity-1┃
┗━━━━━┛
↓
┏━━━━━┓
┃Activity-2┃
┗━━━━━┛
↓ ↑
┏━━━━━┓
┃Activity-3┃
┗━━━━━┛
↓ ↑
┏━━━━━┓
┃Activity-4┃
┗━━━━━┛
これは簡単でActivity-2を起動する時
Intent i = new Intent(getApplicationContext(),SecondActivity.class);
startActivity(i);
finish();
の様にすれば良い。(戻るボタンを無効にすると言う手もあるが)
Activity-2から戻ろうとしてもActivity-1は終了しているのでアプリ自体が終了する。
次に下図の様にActivity-4から直接Activity-2にActivityを飛ばして戻りたい場合
┏━━━━━┓
┃Activity-1┃
┗━━━━━┛
↓ ↑
┏━━━━━┓
┃Activity-2┃←┐
┗━━━━━┛ │
↓ ↑ │
┏━━━━━┓ │
┃Activity-3┃ │
┗━━━━━┛ │
↓ (↑) │
┏━━━━━┓ │
┃Activity-4┃─┘
┗━━━━━┛
手法は2つあって、まずActivity-2からActivity-3を呼び出す際に
Intent i = new Intent(getApplicationContext(),ThirdActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(i);
とする方法、但しこれは決め撃ちになってしまう。
Activity-3はスタックに積まれないので戻りたいケースもある時には対応出来ない。
つまり(↑)の遷移が実現出来ない。
その様な場合はActivity-4から戻る際に
Intent i = new Intent(getApplicationContext(),SecondActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
とすれば良い。これだとActivity-4の実行状況に応じて戻るActivityを切り替えられる。
もちろんActivity-2だけではなくActivity-1にも(finish()してなければ)直接戻れる。
…ガーン!入力画面だと問題ないのにプレビューだと表示がズレる!!
使用フォントを指定出来るのかな?後で調べよう(--;
↓
HTMLエディターならフォントが指定出来るけど当幅フォントが無いみたい(泣)
この件を調べてて等幅フォントの等幅は『とうはば』と読むのだと知った。
ず~~~~っと『とうふく』って読むのだと思ってた(滝汗)
不織布を『ふおりぬの』って読むんだと思い込んでた以来の衝撃でした(笑)
通常Activityは下図の様に
┏━━━━━┓
┃Activity-1┃
┗━━━━━┛
↓ ↑
┏━━━━━┓
┃Activity-2┃
┗━━━━━┛
↓ ↑
┏━━━━━┓
┃Activity-3┃
┗━━━━━┛
↓ ↑
┏━━━━━┓
┃Activity-4┃
┗━━━━━┛
とスタック、ポップの関係で遷移する。
ここで下図の様にActivity-1に戻りたくない場合
┏━━━━━┓
┃Activity-1┃
┗━━━━━┛
↓
┏━━━━━┓
┃Activity-2┃
┗━━━━━┛
↓ ↑
┏━━━━━┓
┃Activity-3┃
┗━━━━━┛
↓ ↑
┏━━━━━┓
┃Activity-4┃
┗━━━━━┛
これは簡単でActivity-2を起動する時
Intent i = new Intent(getApplicationContext(),SecondActivity.class);
startActivity(i);
finish();
の様にすれば良い。(戻るボタンを無効にすると言う手もあるが)
Activity-2から戻ろうとしてもActivity-1は終了しているのでアプリ自体が終了する。
次に下図の様にActivity-4から直接Activity-2にActivityを飛ばして戻りたい場合
┏━━━━━┓
┃Activity-1┃
┗━━━━━┛
↓ ↑
┏━━━━━┓
┃Activity-2┃←┐
┗━━━━━┛ │
↓ ↑ │
┏━━━━━┓ │
┃Activity-3┃ │
┗━━━━━┛ │
↓ (↑) │
┏━━━━━┓ │
┃Activity-4┃─┘
┗━━━━━┛
手法は2つあって、まずActivity-2からActivity-3を呼び出す際に
Intent i = new Intent(getApplicationContext(),ThirdActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(i);
とする方法、但しこれは決め撃ちになってしまう。
Activity-3はスタックに積まれないので戻りたいケースもある時には対応出来ない。
つまり(↑)の遷移が実現出来ない。
その様な場合はActivity-4から戻る際に
Intent i = new Intent(getApplicationContext(),SecondActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
とすれば良い。これだとActivity-4の実行状況に応じて戻るActivityを切り替えられる。
もちろんActivity-2だけではなくActivity-1にも(finish()してなければ)直接戻れる。
…ガーン!入力画面だと問題ないのにプレビューだと表示がズレる!!
使用フォントを指定出来るのかな?後で調べよう(--;
↓
HTMLエディターならフォントが指定出来るけど当幅フォントが無いみたい(泣)
この件を調べてて等幅フォントの等幅は『とうはば』と読むのだと知った。
ず~~~~っと『とうふく』って読むのだと思ってた(滝汗)
不織布を『ふおりぬの』って読むんだと思い込んでた以来の衝撃でした(笑)
※コメント投稿者のブログIDはブログ作成者のみに通知されます