watabee's blog

プログラミング関連のブログです

【Android】Activityの再生成時にFragmentを再生成させない

Activity 再生成時に Fragment を再生成させたくなかったのですが、その方法がわかったのでメモしておきます。

ちなみに Fragment は Support Library の Fragment を使用していることが前提です。

以下のコードを実装するだけで、Fragment が再生成されなくなります。

class MyActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState?.apply { remove("android:support:fragments") })
    
        ...
    }

    ...
}

こちらの StackOverflow の回答 を参考にしています。

AppCompatActivity が継承している FragmentActivity では android:support:fragments というタグ名で Fragment の状態を Bundle に保存しているため、Activity の onCreate で保存された Fragment の情報を削除してしまえば Fragment は再生成されません。