From 7f39b3c6d8d6e745fa78f231cb55bc33177abed5 Mon Sep 17 00:00:00 2001 From: cketti Date: Tue, 5 Feb 2013 16:01:07 +0100 Subject: [PATCH] Fix a potential NullPointerException when rotating the device twice When MessageListFragment is on the back stack and the device is rotated the instance state will be restored but no new view will be created. If the device is rotated again onSaveInstanceState() is called and we have to take care not to assume that the views have been created. --- src/com/fsck/k9/fragment/MessageListFragment.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/com/fsck/k9/fragment/MessageListFragment.java b/src/com/fsck/k9/fragment/MessageListFragment.java index 54c32fef5..7a3b8d29c 100644 --- a/src/com/fsck/k9/fragment/MessageListFragment.java +++ b/src/com/fsck/k9/fragment/MessageListFragment.java @@ -804,9 +804,9 @@ public class MessageListFragment extends SherlockFragment implements OnItemClick super.onSaveInstanceState(outState); saveSelectedMessages(outState); + saveListState(outState); outState.putBoolean(STATE_REMOTE_SEARCH_PERFORMED, mRemoteSearchPerformed); - outState.putParcelable(STATE_MESSAGE_LIST, mListView.onSaveInstanceState()); outState.putParcelable(STATE_ACTIVE_MESSAGE, mActiveMessage); } @@ -849,6 +849,15 @@ public class MessageListFragment extends SherlockFragment implements OnItemClick } } + private void saveListState(Bundle outState) { + if (mSavedListState != null) { + // The previously saved state was never restored, so just use that. + outState.putParcelable(STATE_MESSAGE_LIST, mSavedListState); + } else if (mListView != null) { + outState.putParcelable(STATE_MESSAGE_LIST, mListView.onSaveInstanceState()); + } + } + private void initializeSortSettings() { if (mSingleAccountMode) { mSortType = mAccount.getSortType();