实现一个应用程序,用户可以登录我有以下情况:如果用户登录进行操作否则启动登录活动的结果,如果结果是Activity.RESULT_OK执行操作。行动onActivityResult和“的onSaveInstanceState后的错误不能执行此操作”
我的问题是,要perfom行动是显示DialogFragment,但在onActivityResult回调调用
DialogFragment newFragment = MyDialogFragment.newInstance(mStackLevel);
newFragment.show(ft, "dialog")
抛出一个异常:
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();
我想你应该发布整个代码。看起来像你试图显示对话框后继续 – nandeesh
编辑的问题:D – Addev
检查http://www.androiddesignpatterns.com/2013/08/fragment-transaction-commit-state-loss.html了解为什么发生这种情况 – Maragues