Переместить данные из второго занятия в первое занятие - PullRequest
0 голосов
/ 13 декабря 2018

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

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        val textView1: TextView = findViewById(R.id.num1)
        val textView2: TextView = findViewById(R.id.num2)
        val Button: Button = findViewById(R.id.button)
        val intent = intent
        val message: String = intent.getStringExtra(SecondActivity.EXTRA_MESSAGE)
        textView1.setText(message)
        Button.setOnClickListener(){
            val intent: Intent = Intent(this, SecondActivity::class.java)
            startActivity(intent)
        }
    }

SecondActivity:

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_second)
        val item = edit.text.toString()
        button.setOnClickListener(){
            val intent = Intent(this, MainActivity::class.java)
            intent.putExtra(EXTRA_MESSAGE , item)
            startActivity(intent)
        }
    }
    companion object {
        val EXTRA_MESSAGE: String =
            "com.example.android.twoactivities.extra.MESSAGE"
    }

Ответы [ 4 ]

0 голосов
/ 28 февраля 2019

Прежде всего, от MainActivity до SecondActivity вам нужно использовать startActivityForResult ()

    val requestCode = 0
    val intent = Intent(this, SecondActivity::class.java)
    intent.putExtra("your key","your value")
    this.startActivityForResult(intent, requestCode)

вы объявляете код запроса, целое число, объявляете намерение, как вы делаете сейчас, и помещаете свой ключ внамерение поставить дополнительно.Важная часть: вам нужно использовать startActivityForResult с вашими намерениями и кодом запроса.

Теперь, во втором упражнении, чтобы получить строку намерения:

 val string = intent.getStringExtra("your key")

Когда вы будете готовы вернуть значение, используйте:

    val resultCode = 1
    val returnIntent = Intent()
    returnIntent.putExtra("your key","your value")
    setResult(resultCode, intent)
    finish()

Где высоздайте новое намерение, вы добавляете то, что вам нужно, чтобы добавить дополнительные намерения, и возвращаете его с помощью setResult - запомните resultCode и requestCode.Завершить () - закрыть действие, в котором вы сейчас находитесь (только заданный результат не приведет к закрытию действия)

Наконец, для основного действия вам необходимо переопределить этот метод:

    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    if (requestCode == yourRequestCode){
        if (resultCode == yourResultCode){
            //do something
        }
    }

}
0 голосов
/ 13 декабря 2018

вам нужно вызвать

startActivityForResult(intent, request_code) ;

вместо

startActivity(intent);

, чтобы получить ответ в методе onActivityResult.

0 голосов
/ 28 февраля 2019

Привет, используйте startActivityForResult(intent, requestcode);, и в вашем SecondActivty просто используйте этот

val myintent = Intent()
            resultIntent.putExtra("YourKey", value)
            setResult(Activity.RESULT_OK, myintent)
            finish()

, чтобы вернуться к вашей MainActivity.

0 голосов
/ 13 декабря 2018

Для получения данных из второго действия после намерения из первого действия.
Шаг 1: запуск Второе действие с использованием намерения с startActivityForResult (намерение намерения, int REQUEST_CODE) выполнив это, вы получите данные, отправленные из второго действия

val intent: Intent = Intent (this, SecondActivity :: class.java) startActivityForResult (intent, 101)

Шаг 2: Откройте Второе занятие и напишите приведенный ниже код, где вы хотите завершить Второе занятие (т. Е. Где вы хотите отправить данные в Первое занятие ) Примечание : "KEY" и передача типа данных важны для получения результата в Первое действие

val value : String = "sendBackData"
val intent = Intent()
        resultIntent.putExtra("KEY", value)
        setResult(Activity.RESULT_OK, intent)
        finish()

Шаг 3: В первом упражнении.создать метод переопределения onActivityResult , чтобы получить данные в Первое действие с «КЛЮЧОМ»

Примечание: клавиша в Второе действие и Ключ внутри onActivityРезультат первого действия должен быть таким же.

override fun onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
if(requestCode == 101 && resultCode == RESULT_Ok && data != null){
     val str : String = data.getStringExtra("KEY")
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...