Возврат данных из активности во фрагмент

Я открываю действие при касании фрагмента. как вернуть данные во фрагмент, который открывает Activity.

onActivityResult может помочь!
Paresh P. 25.02.2019 14:13
startActuivityForResult/onActivityResult
Vladyslav Matviienko 25.02.2019 14:15

Не забудьте запуститьActivity из фрагмента с контекстом фрагмента, чтобы получить вызов непосредственно во фрагменте, например MyFragment.this.startActivtiyForResult(intent,12);

Shivam Yadav 25.02.2019 15:05
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
3
399
2

Ответы 2

1- Сначала вам нужно запустить Activity из вашего фрагмента, используя startActivityForResult()

2- Обязательно вызовите super.onActivityResult в методе onActivityResult() вашей деятельности (если вы его реализуете)

3-Внутри вашего фрагмента вам просто нужно реализовать onActivityResult() и обработать результат по своему усмотрению.

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

Intent intent = new Intent(this, MyIntent.class);
intent.putExtra("aString", aString);
intent.putExtra("aSomething", customSerializableType);
startActivityForResult(intent, MY_REQUEST_ID);

В намерении получить это как:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ...

    Intent intent = getIntent();

    String newString = intent.getStringExtra("aString");
    CustomSerializableType newSomething = intent.getSerializableExtra("aSomething");
}

Из вашего намерения отправьте данные обратно с помощью:

private void done() {
    Intent intent = new Intent();
    intent.putExtra("aString", aString);
    intent.putExtra("aSomething", customSerializableType);

    setResult(Activity.RESULT_OK, intent);
    finish();
}

И получить эти данные в хостинге с помощью

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
  super.onActivityResult(requestCode, resultCode, data);
  switch (requestCode) {
    case MY_REQUEST_ID:
      if (resultCode == Activity.RESULT_OK) {
        String newString = data.getStringExtra("aString");
        CustomSerializableType newSomething = data.getSerializableExtra("aSomething");
      }
      break;
}

Другие вопросы по теме