Как сохранить состояние fragment при использовании replace?
У меня есть экран на нем контейнер для фрагментов, и пара кнопок для переключения между ними. Во втором фрагменте есть текст, картинка и кнопка, по нажатию на кнопку текст и картинка меняются. Если я переключаюсь обратно на фрагмент_1, а затем снова на фрагмент_2, картинка и текст остаются старыми. Вот мой код:
class MainActivity : AppCompatActivity() {
public override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
Log.d("LogFr", "Start App")
val fragmentManger = supportFragmentManager
val transaction = fragmentManger.beginTransaction()
transaction.add(R.id.frgmCont, Fragment1(), "frag1")
transaction.commit()
}
fun onClick(v: View) {
val transaction = supportFragmentManager.beginTransaction()
when (v.id) {
R.id.btnFr1 -> {
transaction.replace(R.id.frgmCont, Fragment1(), "frag1").addToBackStack(null)
Log.i("LogFr", "First Fr")
}
R.id.btnFr2 -> {
transaction.replace(R.id.frgmCont, Fragment2(), "frag2").addToBackStack(null)
Log.i("LogFr", "Second Fr")
}
}
transaction.commit()
}
}
class Fragment1 : Fragment() {
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
return inflater.inflate(R.layout.fragment1, null)
}
}
class Fragment2 : Fragment() {
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
val view = inflater.inflate(R.layout.fragment2, container, false)
val fr2_txt: TextView = view.findViewById(R.id.fr2_txt) as TextView
val doSome: Button = view.findViewById(R.id.doSome) as Button
fr2_txt.text = (2 + 2).toString()
doSome.setOnClickListener {
fr2_txt.text = (2 + 5 + 7).toString()
fr2_img.setImageResource(R.drawable.cat_2)
}
return view
}
}
Как сделать так что бы состояние фрагмента сохранялось?