Как вернуть данные из занятия 2 в занятие 1, если я не знаю, когда закончится занятие 2? - PullRequest
0 голосов
/ 19 мая 2019

Итак, у меня есть действие 1, которое является основным меню. Тогда у меня есть активность 2, которая является страницей магазина. Активность магазина начинается с текущего баланса пользователя. Когда пользователь находится в магазине, он может приобрести несколько вещей.

Я хочу отправить обновленный баланс обратно в главное меню после того, как пользователь приобрел вещи. Я использую StartActivityForResult, но проблема в том, что я не знаю, когда закончится действие 2 (хранилище). Я не использую кнопку «Готово» или что-либо, что возвращает пользователя в главное меню. Пользователь просто возвращается в главное меню, нажав кнопку «Назад» на своем телефоне.

Как бы я решил эту проблему и отправил обновленный баланс на занятие 1?

Заранее спасибо,

Александр

Ответы [ 3 ]

1 голос
/ 20 мая 2019

Activity1 должен запустить Activity2, используя startActivityForResult().

Каждый раз, когда пользователь что-то делает в Activity2, звоните setResult() с Intent, содержащим текущий остаток в «extra».

Когда пользователь нажимает кнопку НАЗАД, onActivityResult() будет вызываться в Activity1 с последним Intent, который вы передали setResult(). Затем вы можете извлечь текущий баланс из «extra» в «Intent».

Вам не нужно ничего переопределять.

1 голос
/ 19 мая 2019

Есть несколько способов добиться этого, и вы можете использовать любой.

1) Вы можете override метод onBackPress в Activity2, чтобы определить, когда пользователь нажимает кнопку «Назад», и установить свой результат.там.

2) Вы можете получить обновленный баланс из вашей базы данных при вызове метода Activity1 onStart.(Или вы можете использовать живые данные / привязку данных для единственного источника правды)

3) Вы можете использовать одноэлементный класс для поддержания текущего баланса.Обновите его в Activity2 и загрузите в Activity1.

0 голосов
/ 20 мая 2019

В соответствии с официальным документом

вы можете вызвать второе действие следующим образом:

Intent pickContactIntent = new Intent(Intent.ACTION_PICK, Uri.parse("content://contacts"));
pickContactIntent.setType(Phone.CONTENT_TYPE); // Show user only contacts w/ phone numbers
startActivityForResult(pickContactIntent, PICK_CONTACT_REQUEST);

, а затем в вашем первом действии ожидать результата следующим образом:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // Check which request we're responding to
    if (requestCode == PICK_CONTACT_REQUEST) {
        // Make sure the request was successful
        if (resultCode == RESULT_OK) {
            // The user picked a contact.
            // The Intent's data Uri identifies which contact was selected.

            // Do something with the contact here (bigger example below)
        }
    }
}
...