Как передать данные из одного действия в другое в приложении Android - PullRequest
0 голосов
/ 08 мая 2019

Я пытаюсь создать простое приложение, в котором вы вводите свои данные в одном упражнении с помощью editText, а оно отображается в другом в TextView.Но я действительно не знаю, как заставить это работать.Как вы можете видеть, это простой код, но сейчас, когда я нажимаю «Отправить», ничего не происходит с другим действием.это первый актив

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }
    fun switchToActivity (view: View){
        val myIntent = Intent(this, Main2Activity::class.java)
        startActivity(myIntent)
    }
    override fun onActivityResult(requestCode: Int,
                                  resultCode: Int,
                                  myInten: Intent?) {
        var text2 = myInten?.getStringExtra("text")
        textView.setText(text2)
    }
}

а это второй

class Main2Activity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main2)
    }
    fun buttonListener (view: View){
        var text = editText.text.toString()

        val myIntent = Intent()
        myIntent.putExtra("textView", text)
        setResult(Activity.RESULT_OK, myIntent)
        finish()
    }
}

Ответы [ 2 ]

2 голосов
/ 08 мая 2019

С вашим кодом есть 2 проблемы.

Во-первых, чтобы получить результат от другого действия, вы должны использовать startActivityForResult () .

fun switchToActivity (view: View){
    val myIntent = Intent(this, Main2Activity::class.java)
    startActivityForResult(myIntent)
}

Second, вы должны использовать один и тот же ключ при сохранении и получении результата.

var text2 = myInten?.getStringExtra("textView")

Положите его вместе.

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }

    fun switchToActivity (view: View){
        val myIntent = Intent(this, Main2Activity::class.java)
        startActivityForResult(myIntent)
    }

    override fun onActivityResult(requestCode: Int,
                                  resultCode: Int,
                                  myInten: Intent?) {
        var text2 = myInten?.getStringExtra("textView")
        textView.setText(text2)
    }
}
0 голосов
/ 08 мая 2019

Вы должны использовать: startActivityForResult(myIntent) вместо: startActivity(myIntent)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...