Реализация приложения, в котором пользователь может войти в систему. У меня есть следующая ситуация: если пользователь вошел в систему, выполните действие else, запустив операцию входа для результата, и если результат Activity.RESULT_OK выполнит действие.
Моя проблема в том, что действие для выполнения - это показать DialogFragment, но вызывать
DialogFragment newFragment = MyDialogFragment.newInstance(mStackLevel);
newFragment.show(ft, "dialog")
в обратном вызове onActivityResult выдается исключение:
Caused by: java.lang.IllegalStateException:
Can not perform this action after onSaveInstanceState
Итак, как я могу это решить? Я думаю, что поднимаю флаг там и показываю диалог в onResume, но я вижу это решение немного грязным
Изменить: добавлено больше кода (Im, следующего за этим примером для показа DialogFragment
Когда действие запрашивается пользователем:
...
if (!user.isLogged()){
startActivityForResult(new Intent(cnt, Login.class), REQUEST_LOGIN_FOR_COMMENT);
}
В том же фрагменте
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_LOGIN_FOR_COMMENT && resultCode == Activity.RESULT_OK) {
FragmentTransaction ft = getFragmentManager().beginTransaction();
DialogFragment newFragment = MyDialogFragment.newInstance();
newFragment.show(ft, "dialog")
}
}
И если пользователь регистрирует вызовы активности входа,
setResult(Activity.RESULT_OK);
finish();