我使用replaceFragment切换fragment是总是因重载而导致一开始写进去的数据丢失。
尝试了一下show和hide方法,但是没研究出来,想请教一下通过hide和show的方法切换fragment并保存fragment中的数据的方法。
class MainActivityRSC : AppCompatActivity() {
@RequiresApi(Build.VERSION_CODES.O)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main_rsc)
supportActionBar?.hide()
initThread()
var fragflag = 0
val buttonRSC0: Button = findViewById(R.id.RSC_General)
val buttonRSC1: Button = findViewById(R.id.RSC_1)
val buttonRSC11: Button = findViewById(R.id.RSC_MenuBack)
buttonRSC0.setOnClickListener {
if(fragflag != 0) {
replaceFragment(RightFragRSC0())
fragflag = 0
}
}
buttonRSC1.setOnClickListener {
if(fragflag != 1) {
replaceFragment(RightFragRSC1())
fragflag = 1
}
}
buttonRSC11.setOnClickListener {
val intent = Intent(this,MainActivity::class.java)
startActivity(intent)
}
replaceFragment(RightFragRSC0())
}
/**
* 切换不同设备的fragment
*/
private fun replaceFragment(fragment: Fragment) {
val fragmentManager = supportFragmentManager
val transaction = fragmentManager.beginTransaction()
transaction.replace(R.id.rightLayout, fragment)
transaction.commit()
}
}
求助,切换fragment不丢失数据的方法。
求助kotlin中show()和hide()的用法。
你这不是数据缺失问题,每次点击button的时候都重新创建了一个fragment,把所有的fragment提前定义成成员变量,切换的时候判断是否为空,不为空再做show/hide操作