【发布时间】:2012-08-19 18:17:14
【问题描述】:
实现用户可以登录的应用程序我有以下情况:如果用户已登录,则执行操作,否则启动登录活动以获得结果,如果结果是 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 中显示对话框,但我认为这个解决方案有点脏
编辑:添加了更多代码(我按照此示例显示 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();
【问题讨论】:
-
我认为您应该发布整个代码。似乎您正试图在 onpause 后显示对话框
-
查看androiddesignpatterns.com/2013/08/… 了解为什么会发生这种情况
标签: java android android-fragments