Доступ к данным, возвращаемым onActivityResult в функции onCreate - PullRequest
0 голосов
/ 22 февраля 2020

В Android / Kotlin я запускаю новое действие с startActivityForResult в моей функции onCreate и получаю возвращаемую переменную (назовем ее X) из onActivityResult вне функции onCreate. Впоследствии я хочу получить доступ к переменной X в функции onCreate, чтобы отобразить ее на экране. Однако он никогда не отображает данные, как если бы они были пустыми .

Есть идеи, что я могу делать неправильно? Спасибо

Вот код. Когда пользователь нажимает на NotesView, он запускает новое действие (Notes2Activity), где пользователь может вводить свою заметку в полноэкранном режиме. Затем после проверки заметки код возвращается к предыдущему действию, где я пытаюсь изменить содержимое NotesView для returnNotes, но приложение вылетает.

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

val notesView: TextView
notesView = findViewById<TextView>(R.id.inputNotes)

notesView.setOnClickListener {
            val intent = Intent(this, Notes2Activity::class.java)
            startActivityForResult(intent,2)}}

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {if (resultCode == Activity.RESULT_OK) {
            if(data != null) {
                val returnNotes: String = data.getSerializableExtra("notesEntered") as String
                var returnNotesInputs = returnNotes
                notesView.setText("")
                notesView.append(returnNotes)
                Log.d(TAG, "note returned to newContactActivity is: $returnNotes")}}
        else if (resultCode == Activity.RESULT_CANCELED) 
        {Log.d(TAG, "user clicked canceled in Notes2Activity")}
}

1 Ответ

0 голосов
/ 22 февраля 2020

Вы можете сохранить данные в поле (ах) глобального класса и после этого вызвать recreate() для действия. По сути, это снова вызовет onCreate() для операции, а затем вы можете использовать данные в полях.

IMO, это плохой способ справиться с ситуацией. Специфический c logi c из onCreate() может быть экспортирован в частную функцию. Затем вы можете вызвать эту приватную функцию из onActivityResult(), а также onCreate().

...