Вопрос по android – Как вернуть результат активности ребенка в Parent в Android?

8

Я запускаю дочернюю операцию нажатием кнопки «Родитель». И я вычисляю некоторый результат (типа string) в дочерней активности и заканчиваю возвращение ребенка в Parent. Есть ли лучший способ получить этот результат в Parent, используя интенты или дополнения? (Я могу получить этот результат в Parent, сделав переменную результата общедоступной и статической в Child). Пожалуйста, помогите мне. Я новичок в разработке для Android.

startActivityForResult(new Intent(ParentActivity.this, ChildActivity.class), ACTIVITY_CONSTANT);

Что я должен написать в onActivityResult () из Parent?

Ваш Ответ

2   ответа
28

startActivityForResult(new Intent(ParentActivity.this, ChildActivity.class), ACTIVITY_CONSTANT);

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

В детской деятельности:

Intent data = new Intent();
data.putExtra("myData1", "Data 1 value");
data.putExtra("myData2", "Data 2 value");
// Activity finished ok, return the data
setResult(RESULT_OK, data);
finish();

А в родительском действии вы можете переопределить onActivityResult (), и внутри вы можете иметь параметр Intent, а из параметра Intent этого метода вы можете получить дополнительные значения, переданные из дочернего действия, такие как intent.getStringExtra или intent.getSerializableExtra.

например:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (resultCode == RESULT_OK && requestCode == REQUEST_CODE) {
        if (data.hasExtra("myData1")) {
            Toast.makeText(this, data.getExtras().getString("myData1"),
                Toast.LENGTH_SHORT).show();
        }
    }
}
Как я могу вернуть результат от ребенка к родителю? Ваш ответ хорошо работает, если я хочу передать значения от родителя к ребенку. Но мне нужно завершить свою дочернюю активность после вычисления результата в child и вернуть результат родителю. SANDHYA
Спасибо за пример. Это помогло мне.
В этом случае REQUEST_CODE является ACTIVITY_CONSTANT из примера.
Отлично. Большое спасибо SANDHYA
После вызова setResult (...); вам нужно вызвать финиш (); закрыть «дочерний элемент» деятельность.
3

Intent intent = new Intent(getApplicationContext(), yourChildActivity.class);
intent.putExtra("key", "value");
startActivityForResult(intent, ACTIVITY_CONSTANT);

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

Intent data = new Intent();
data.putExtra("key1", "value1");
data.putExtra("key2", "value2");
// Activity finished return ok, return the data
setResult(RESULT_OK, data);
finish();

и получить информацию о результатах детской активности в вашей родительской активности

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (resultCode == RESULT_OK && requestCode == REQUEST_CODE) {
        if (data.hasExtra("key1") && data.hasExtra("key2")) {
            Toast.makeText(
                this,
                "Your reult is :  "data.getExtras().getString("key1") + " " + data.getExtras().getString("key2"),
                Toast.LENGTH_SHORT).show();
        }
    }
}

Похожие вопросы