2014/09/08

[android]基底クラスで今のActivity名を知りたい

NFC関係の画面を作っているのだが、いくつか作っていると、だいたいどの画面でも同じようなことを書いていることに気付いた。
onResume()でenableForegroundDispatch()して、onPause()でdisableForegroundDispatch()して、あとはインテントが飛んできたときに処理する・しないを書いて・・・。

えーい、こういうときはActivityの派生クラスを作って、そこにまとめてしまおう。
abstractでextends Activityなクラスを作って処理をまとめた。

それはよかったのだが、「このActivityのときはやらないけど、それ以外ではやる」というのがあった。
タイトルバーをタップしたときに、一番上のActivityに戻る処理だ。

if (!getLocalClassName().equals(MainActivity.class.getSimpleName())) {
    getActionBar().setHomeButtonEnabled(true);
    getActionBar().setDisplayHomeAsUpEnabled(true);
}
Activityが提供しているのが、一番下のクラス名を返すAPIだったので、それにあわせている。
同じActivity名で別パッケージが存在すると区別はつかないのだが、まあこれでいいや。