[Android]setDisplayHomeAsUpEnabled(true)にしなくても勝手に”戻る”ボタンが表示される理由とはの巻

スポンサーリンク

android-logoどうも今晩は。今日も前回に引き続き、Androidアプリ作成の基礎知識をつけるために、Googleディベロッパーのページを参照しております。

今日は、アプリの中で画面移動したさいにMainActivityの画面に戻る道筋を設けましょうということが説明されている「Add Up Button for Low-level Activities」に記載があるとおり、低い階層でのActivityには上に戻るボタンを追加しよう というのがテーマの項目です。

ここで説明されているのは、Manifestにおいて、子のActivityを定義するときに同時に親(Parent(ペアレント))のActivityが何かを指定したうえで、実際に動く子のActivityの中で

getActionBar().setDisplayHomeAsUpEnabled(true);

もしくは //minSdkVersionが11以上の場合は

getActionBar().setDisplayHomeAsUpEnabled(true);

を指定することで、今回の本題である「前に戻る=ParentActivityに戻るためのボタン」が表示されるとのこと。

だがしかーし、

今回上記のいずれの記述を行っていないにもかかわらずすでに戻るボタンが表示されていたのでなんじゃぁこりゃとなりました。

setDisplayHomeAsIpEnabledの設定してないのに戻るボタンが表示される理由

理由は、アプリ作成時にデフォルトで読み込まれているクラス「Activity.class」にて、

“もしActivityにおいてParentActivityの指定があった場合は
戻るボタンを設定する=setDisplayHomeAsUpEnabled(true)する”

と定義されているからでした。以下がその部分@Eclipse

01

ざっと理解した気で解読すると、

もしActivityの情報の中の”parentActivityName”がnullではない=指定されている時、

アクションバーがない場合は、いずれアクションバーが表示されたときのために「true」という値を「mEnableDefaultActionBarUp」に入れる。

アクションバーがある場合は、すぐに戻るボタンを設置する。

となっていて、とりあえずはParentActivityを指定しておけば勝手に戻るボタンが作成されることがわかりました。

これですっきり。次に進めそうです。

まとめ

前の画面に戻るようなボタンを設定したい場合は、ManifestにてEventを指定する際に前の画面のEvent情報を記載すること。
そうすれば、Activity.classが勝手に戻るボタンを用意してくれるのさ!

 

ではまた。

 

参考:

Why is the up button present without setDisplayHomeAsUpEnabled()?

 

コメント

タイトルとURLをコピーしました