kotlin中fragment切换数据丢失

我使用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操作