2022 Feb. 26.
2021 Nov. 14.
2021 Oct. 31.
出典
onSaveInstanceStateについてちゃんと知る - Qiita
Bundleの保存・読み込み
onSaveInstanceStateはonPauseの直後に呼ばれる。
onSavedInstanceStateで保存した値は、onCreateもしくはonRestoreInstanceStateで復元が可能。
onRestoreInstanceStateはonStartの直後に呼ばれるが、常に呼ばれるわけではなく、保存後にActivityが破棄された次のライフサイクルのタイミングでのみ呼ばれる。
画面回転対応
onSaveInstanceStateでデータをBundleに保存する。
onRestoreInstanceStateでBundleからデータを読み込む。
sample kotlin code
// 画面表示情報保存 override fun onSaveInstanceState(outState: Bundle) { super.onSaveInstanceState(outState) val textView1Str = binding.textView1.text.toString() outState.putString("textView1key", textView1Str) } // 画面表示情報再表示 override fun onRestoreInstanceState(savedInstanceState: Bundle) { super.onRestoreInstanceState(savedInstanceState) binding.textView1.text = savedInstanceState.getString("textView1key", "") }
MainActivityとダイアログとの間のBundleを利用したデータ受け渡し
MainActivityで、Bundleを利用して、開こうとするダイアログにデータを渡すkotlinコード例
val str01 = "ab" val int01 = 12 val args = Bundle() args.putString("String01", smbDomain) args.putInt("Integer01", int01) val myDialogFragment = MyDialogFragment() myDialogFragment.setArguments(args) myDialogFragment.show(supportFragmentManager, "my")
ダイアログで、開く時にBundleからデータを取り出すkotlinコード例
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { val editTextStr01 = myDialogView.findViewById<EditText>(R.id.editTextStr01) val editTextInt01 = myDialogView.findViewById<EditText>(R.id.editTextInt01) editTextStr01.setText(requireArguments().getString("String01", "")) editTextInt01.setText(requireArguments().getInt("Integer01", 0).toString()) }