Triển khai ứng dụng mà người dùng có thể đăng nhập Tôi có tình huống sau: Nếu người dùng đăng nhập thực hiện hành động khác, hãy bắt đầu hoạt động đăng nhập cho kết quả và nếu kết quả là Activity.RESULT_OK thực hiện hành động.Hành động trong onActivityResult và "Lỗi Không thể thực hiện thao tác này sau khi onSaveInstanceState"
Vấn đề của tôi là hành động để phí phạm là để hiển thị một DialogFragment, nhưng gọi
DialogFragment newFragment = MyDialogFragment.newInstance(mStackLevel);
newFragment.show(ft, "dialog")
trong callback onActivityResult ném một ngoại lệ:
Caused by: java.lang.IllegalStateException:
Can not perform this action after onSaveInstanceState
Vì vậy, làm thế nào tôi có thể giải quyết này? Tôi đang nghĩ đến trong việc nâng cao một lá cờ đó và hiển thị hộp thoại ở mặt onResume nhưng tôi thấy giải pháp này một chút bẩn
Edit: Nhập mã hơn (Im sau ví dụ này cho thấy DialogFragment
Khi hành động là theo yêu cầu của người sử dụng:
...
if (!user.isLogged()){
startActivityForResult(new Intent(cnt, Login.class), REQUEST_LOGIN_FOR_COMMENT);
}
trong cùng một đoạn
@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")
}
}
Và nếu người dùng đăng nhập hoạt động Login gọi;
setResult(Activity.RESULT_OK);
finish();
tôi nghĩ bạn nên đăng toàn bộ mã. Có vẻ như bạn đang cố gắng hiển thị hộp thoại sau khi bật – nandeesh
Đã chỉnh sửa câu hỏi: D – Addev
Kiểm tra http://www.androiddesignpatterns.com/2013/08/fragment-transaction-commit-state-loss.html để hiểu tại sao điều này xảy ra – Maragues