OnActivityResult jest wywoływany, gdy rozpoczyna się działanie, a nie po jego zakończeniu
napisałem FragmentActivity z niektórymi kartami. kiedy wywołam dodatkową aktywność (której używam do ustawiania preferencji użytkownika) za pomocą startActivityForResult (bez różnic, jeśli jest w FragmentActivity lub w ListFragment), metoda onActivityResult jest wywoływana, gdy uruchamiam tę aktywność preferencji, ale nie wtedy, gdy ją kończę, spodziewałbym się tego (znowu nie ma różnic, jeśli jest w FragmentActivity lub ListFragment). po zakończeniu działania preferencji ta metoda nie zostanie w ogóle wywołana.
moim problemem jest to, że chcę odświeżyć moją bieżącą kartę (i ustawić ostatni używany identyfikator karty) po zakończeniu aktywności preferencji i miałem nadzieję, że będę w stanie to zrobić w metodzie onActivityResult.
jest to klasa tworząca aktywność preferencji:
public abstract class ListFragmentBase<I> extends ListFragment implements
LoaderCallbacks<List<I>> {
jest to metoda przekazująca mnie do aktywności preferencji w tej klasie:
protected void forwardToPreferences(int currentTab){
Intent intent = new Intent(getActivity(), GlobalPreferencesActivity.class);
getActivity().startActivityForResult(intent, 10);
}
jest to metoda wywoływana po wywołaniu powyższej metody, ale nie po zakończeniu wywołanej aktywności
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
}
to jest aktywność preferencyjna:
public class GlobalPreferencesActivity extends Activity {
a wewnątrz tej klasy widzisz, jak nazywam metodę wykończenia:
TextView confirmSettings = (TextView) view.findViewById(R.id.confirm_settings);
confirmSettings.setTextSize(PreferenceHelper.getSizeHeader(getApplicationContext()));
confirmSettings.findViewById(R.id.confirm_settings).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(BaseFragmentActivity.lastActivity != null){
BaseFragmentActivity.lastActivity.onRefreshData();
}
ComponentName callingActivity = getCallingActivity();
GlobalPreferencesActivity.this.finish();
}
});