Передача данных обратно в первое действие с помощью onBackPressed () и onActivityResult () - PullRequest
0 голосов
/ 07 октября 2018

Я пытаюсь получить измененное пользователем значение Edit Text и установить это значение для первых действий Text View.Для этого я использую функции onBackPressed() и onActivityResult(), как показано ниже.Тем не менее, это означает, что данные не отправляются обратно к первому действию, когда затем нажимается кнопка «Назад»

Второе действие (отправка данных назад):

class MetaDataActivity : AppCompatActivity() {

    val name by lazy {findViewById<EditText>(R.id.editTextName)}

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

        val food =  intent.getParcelableExtra("Food") as Food

        name.setText(food.name)
    }

    override fun onBackPressed() {

        val intent = Intent()
        intent.putExtra("New Name", name.toString())
        setResult(Activity.RESULT_OK, intent)

        super.onBackPressed()
    }
}

Первое действие (получение пользователя)измененные данные):

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

    val food1: ImageButton = findViewById(R.id.imageButtonFood1)
    val name1: TextView = findViewById(R.id.textViewName1)
    val date1: TextView = findViewById(R.id.textViewDate1)

    val pizza = Food(
            "Pizza", "www.test.com", "Italy, Tomato",
            "1/1/2018", "pizza@mail.com", 5)


    date1.text = pizza.date

    food1.setOnClickListener()
    {
        val intent = Intent(this, MetaDataActivity::class.java)
        intent.putExtra("Food", pizza)
        startActivityForResult(intent, 1)
    }
}

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)

    if (requestCode == 1) {

        if (resultCode == Activity.RESULT_OK) {
            val newName = data?.getStringExtra("New Name")

            textViewName1.text = newName
        }
    }
}

Где я пытаюсь редактировать значение textViewName1 из второго действия.

Я считаю, что мои параметры для функцийправильно, просто не могу определить, почему он не получает измененное пользователем значение имени?

Спасибо

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