實現一個應用程序,用戶可以登錄我有以下情況:如果用戶登錄進行操作否則啓動登錄活動的結果,如果結果是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