Правильный способ сделать это, и поскольку у вас есть startActivityForResult()
, это установить результат для действия и при его завершении передать информацию FragmentB. В вашем onBackPressed()
методе вы можете добавить это:
Intent resultIntent = new Intent();
String dataString = "Some info you might want to return to the fragment...";
resultIntent.setData(Uri.parse(dataString));
setResult(RESULT_OK, resultIntent);
finish();
Затем в вашем FragmentB вы должны переопределить метод onActivityResult()
:
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == request_Code) {
if (resultCode == RESULT_OK) {
//here you can pop the FragmentB
}
}
}
Приведенный выше код завершит FinalActivity -> и передаст RESULT_OK методу onActivityResult()
(который будет вызван в FragmentB ), а затем извлечет FragmentB, чтобы получить результат в отображаемом фрагменте.
РЕДАКТИРОВАТЬ: Обратите внимание, что вам потребуется код запроса из startActivityForResult()
, чтобы он был таким же, как в onActivityResult()
, в противном случае фрагмент не будет знать, какое действие вы пытаетесь получить , Вы можете добавить статическое глобальное значение, если хотите.
EDIT2: теперь, когда я вижу, в вашем коде у вас есть что-то вроде:
transaction.addToBackStack("Some String");
эта "какая-то строка" должна быть на самом деле Fragment.getName()
, так что в backstack можно отследить, какие фрагменты там.