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




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;
}
onActivityResultможет помочь!