我有一个活动,上面有一个用于存放碎片的容器,还有几个用于在它们之间切换的按钮。在第二个片段中,有文本,图片和按钮,通过单击按钮可以更改文本和图片。如果我切换回fragment_1,然后再切换回fragment_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
}
}
如何确保新数据保存在片段中?