Я пытаюсь получить измененное пользователем значение 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
из второго действия.
Я считаю, что мои параметры для функцийправильно, просто не могу определить, почему он не получает измененное пользователем значение имени?
Спасибо