Возврат данных из действия во фрагмент - PullRequest
0 голосов
/ 25 февраля 2019

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

Ответы [ 2 ]

0 голосов
/ 25 февраля 2019

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

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;
}
0 голосов
/ 25 февраля 2019

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

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

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

...