Отправка данных переключателя для следующего действия в Котлине

В приложении для Android я хочу, чтобы пользователь проверил переключатель, и в зависимости от того, что проверил пользователь, я хочу, чтобы он изменил что-то в следующем действии (например, скрытие кнопки или изменение текста кнопки). Как я это делаю?

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

val rg1 = findViewById<RadioGroup>(R.id.rg1)
val rb1 = findViewById<RadioButton>(R.id.rb1)
val rb2 = findViewById<RadioButton>(R.id.rb2)
val tv1 = findViewById<TextView>(R.id.tv1)
val btnNext = findViewById<Button>(R.id.btnNext)

rg1.setOnCheckedChangeListener(RadioGroup.OnCheckedChangeListener { _, i ->
            when (i) {
                R.id.rb1 -> tv1.text = "something"
                R.id.rb2 -> tv1.text = "something else"
            }
        })

btnNext.setOnClickListener {
                    val result = tv1.text.toString()
                    val intent = Intent(this, Activity2::class.java)
                    intent.putExtra("Result", result)
                    startActivity(intent)
                }

tv1.isGone = true

После этого в Activity2:

val result = intent.getStringExtra("Result")
val tv2 = findViewById<TextView>(R.id.tv2)
tv2.text = result

он изменяет tv2 в Activity2 (tv1 предназначен только для получения текстовой строки и не должен отображаться в первом действии, как я уже говорил, возможно, есть и лучшее решение). Но самое главное, что делать, когда я хочу скрыть кнопку или сделать что-то еще в следующем действии в зависимости от переключателей?

Я не понимаю вопроса. Вы спрашиваете, правильно ли вы поступили?

Bartek Lipinski 24.07.2019 08:44

Ваш вопрос. Вы уже передаете состояние от одного действия к другому в своих примерах. Ваш вопрос, кажется, относится к тому же, что вы уже делаете. Это неясно.

Bartek Lipinski 24.07.2019 11:23

не уверен, поможет ли мое решение или нет, может быть, да: P

a_local_nobody 24.07.2019 11:33

собираюсь добавить кое-что к моему ответу сейчас

a_local_nobody 24.07.2019 12:05
0
4
429
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

не уверен, что это ответ на ваш вопрос или нет, но подумайте об этом:

ты можешь измениться

rg1.setOnCheckedChangeListener(RadioGroup.OnCheckedChangeListener { _, i ->
            when (i) {
                R.id.rb1 -> tv1.text = "something"
                R.id.rb2 -> tv1.text = "something else"
            }
        })

к чему-то вроде этого

rg1.setOnCheckedChangeListener(RadioGroup.OnCheckedChangeListener { _, i ->
            when (i) {
                R.id.rb1 -> OneSetupOfYourUI()
                R.id.rb2 -> AnotherSetupOfYourUI()
            }
        })

затем определите, что вы хотите изменить внутри функций, и вызовите эти функции вместо изменения каждого отдельного компонента.

fun OneSetupOfYourUI(){
//change stuff in here
}

Может быть, это помогает?

Затем, когда вы начинаете новую активность:

val result = tv1.text.toString()
val intent = Intent(this, Activity2::class.java)
intent.putExtra("Result", result)
startActivity(intent)

Рассмотрите возможность добавления нескольких утверждений intent.putExtra() на основе настроенного вами пользовательского интерфейса или того, что выбрал пользователь.

Редактировать

Просто для всех, кто заинтересован или не уверен, вы также можете просто сделать это в заявлении when:

when (i) {
    R.id.rb1 -> {
    tv1.text = "something"
    etc.
    //now you can do several statements here :)
    }
 }

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