かずの随筆ブログ

あれこれエッセイを記述する場所としてブログを始めてみました。厳密に言うと随筆とエッセイは異なるそうですが。

AndroidのActivityの遷移コントロールについて

2013-04-13 08:50:00 | Android
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エディターならフォントが指定出来るけど当幅フォントが無いみたい(泣)

この件を調べてて等幅フォントの等幅は『とうはば』と読むのだと知った。
ず~~~~っと『とうふく』って読むのだと思ってた(滝汗)

不織布を『ふおりぬの』って読むんだと思い込んでた以来の衝撃でした(笑)


最新の画像もっと見る

コメントを投稿