もっさり日記

だらだらと。

【Android】Activityが一瞬表示されちゃうやつ

以下のようなアプリを作っていてちょっとハマッたので忘備録
NFCタグのタッチで起動するアプリ、タグに特定の文字列がなければアプリを起動したくない。

onCreate()でfinishすりゃ大丈夫だべーと思っていたけど、一瞬だけ表示されちゃうので困ってた。
んで、色々やってみた結果、下記方法で対応できた。

1. AndroidManifest.xmlのテーマを Theme.Translucent.NoTitleBar
2. onCreateでsetContentViewする前に起動すべきかを判定
3. 起動OKなら setContentViewの前に setThemeでテーマを設定

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    if(使えるタグか判定){
        // 使えない場合は終了
        finish()
    }else{
        // テーマを本来のテーマに設定
        setTheme(android.R.style.Theme_Light_NoTitleBar)
        setContentView(R.layout.activity_main)
    }
}