Текст кнопки переключения Android возвращается к значению по умолчанию, когда фрагмент вызывается из заднего стека

У меня есть фрагмент, обработанный как часть навигационного графика. Назовите его «Фрагмент элементов». У меня есть три кнопки-переключателя в этом фрагменте, и я устанавливаю togglebutton.text для каждой из них программно, получая доступ к значениям, хранящимся в общих префах, при первом создании фрагмента. Я также установил имя пользователя текстового дисплея таким же образом. "Добро пожаловать, [имя пользователя]!..."

Когда я перехожу к следующему фрагменту, а затем нажимаю кнопку «Назад», чтобы вернуться к «Фрагменту элементов», имя пользователя заполняется правильно, но все togglebutton.text отображают либо «ВКЛ», либо «ВЫКЛ» в зависимости от состояния, в котором они находились. когда мы перешли от «Фрагмента предметов» в первую очередь, который является текстом по умолчанию для кнопки переключения.

Когда я нажимаю кнопку переключения, чтобы изменить ее состояние, правильный текст заполняется, как я и ожидал.

Почему текст не сохраняется при перемещении вперед и назад в стеке?

Мой код:

      lass ItemsFragment: Fragment(R.layout.fragment_items) {

    private val args: ItemsFragmentArgs by navArgs()
    lateinit var loginUserText: TextView
    lateinit var userEmail: String
    lateinit var varOneButton: TextView
    lateinit var varTwoButton: TextView
    lateinit var varThreeButton: TextView
    private lateinit var buttonEnterItems: Button
    lateinit var buttonOneText: String
    lateinit var buttonTwoText: String
    lateinit var buttonThreeText: String
    private var buttonOneState by Delegates.notNull<Boolean>()
    private var buttonTwoState by Delegates.notNull<Boolean>()
    private var buttonThreeState by Delegates.notNull<Boolean>()

    @SuppressLint("ResourceType")
    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)


        loginUserText = view.findViewById(R.id.welcomeUserText)
        varOneButton = view.findViewById(R.id.toggleButton1)
        varTwoButton = view.findViewById(R.id.toggleButton2)
        varThreeButton = view.findViewById(R.id.toggleButton3)
        buttonEnterItems = view.findViewById(R.id.button_enterItems)
        buttonOneState = false
        buttonTwoState = false
        buttonThreeState = false


//        loginUserText.text = args.userName

        val sharedPref = activity?.getPreferences(Context.MODE_PRIVATE) ?: return
        val json = sharedPref.getString("UserData", "")
        if (json != null) {
            if (json.isNotEmpty()) {
                val gson = Gson()
                val rd: LoginFragment.UserInfo =
                    gson.fromJson(json, LoginFragment.UserInfo::class.java)

                userEmail = rd.user_email

                buttonOneText = rd.var_one
                buttonTwoText = rd.var_two
                buttonThreeText = rd.var_three

                loginUserText.text = "Welcome, ${rd.user_name}! \n\n What did you do yesterday?"
                varOneButton.text = buttonOneText
                varTwoButton.text = buttonTwoText
                varThreeButton.text = buttonThreeText
            }
        }

        varOneButton.setOnClickListener {
            buttonOneState = !buttonOneState
            varOneButton.text = buttonOneText
        }
        varTwoButton.setOnClickListener {
            buttonTwoState = !buttonTwoState
            varTwoButton.text = buttonTwoText
        }
        varThreeButton.setOnClickListener {
            buttonThreeState = !buttonThreeState
            varThreeButton.text = buttonThreeText
        }

        buttonEnterItems.setOnClickListener {
            val bOneStateOut = buttonOneState.toString()
            val bTwoStateOut = buttonTwoState.toString()
            val bThreeStateOut = buttonThreeState.toString()

            val current = LocalDateTime.now()
            val formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd")
            val date = current.format(formatter)
            print(date)

            sendPostRequestData(
                "POST", "postdata",
                "email", userEmail,
                "date", date,
                "buttonOneState", bOneStateOut,
                "buttonTwoState", bTwoStateOut,
                "buttonThreeState", bThreeStateOut
            )
            }
        }

Что я ожидаю: введите описание изображения здесь

Что я получаю:

введите описание изображения здесь

0 ответов

Другие вопросы по тегам