Merge pull request #2404 from nextcloud/fixNPEonRestoring

Resume activity crash due to grid view check
This commit is contained in:
Tobias Kaminsky 2018-03-28 13:55:41 +02:00 committed by GitHub
commit a028232d9c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 17 additions and 25 deletions

View file

@ -254,6 +254,11 @@ public abstract class PreferenceManager {
ArbitraryDataProvider dataProvider = new ArbitraryDataProvider(context.getContentResolver()); ArbitraryDataProvider dataProvider = new ArbitraryDataProvider(context.getContentResolver());
FileDataStorageManager storageManager = ((ComponentsGetter)context).getStorageManager(); FileDataStorageManager storageManager = ((ComponentsGetter)context).getStorageManager();
if (storageManager == null) {
storageManager = new FileDataStorageManager(account, context.getContentResolver());
}
String value = dataProvider.getValue(account.name, getKeyFromFolder(preferenceName, folder)); String value = dataProvider.getValue(account.name, getKeyFromFolder(preferenceName, folder));
while (folder != null && value.isEmpty()) { while (folder != null && value.isEmpty()) {
folder = storageManager.getFileById(folder.getParentId()); folder = storageManager.getFileById(folder.getParentId());

View file

@ -385,16 +385,6 @@ public class ExtendedListFragment extends Fragment
return false; return false;
}); });
if (savedInstanceState != null) {
int referencePosition = savedInstanceState.getInt(KEY_SAVED_LIST_POSITION);
if (mRecyclerView != null) {
Log_OC.v(TAG, "Setting and centering around list position " + referencePosition);
mRecyclerView.getLayoutManager().scrollToPosition(referencePosition);
}
}
// Pull-down to refresh layout // Pull-down to refresh layout
mRefreshListLayout = v.findViewById(R.id.swipe_containing_list); mRefreshListLayout = v.findViewById(R.id.swipe_containing_list);
onCreateSwipeToRefresh(mRefreshListLayout); onCreateSwipeToRefresh(mRefreshListLayout);
@ -420,16 +410,6 @@ public class ExtendedListFragment extends Fragment
layoutParams.setMargins(0, 0, pixel / 2, bottomNavigationView.getMeasuredHeight() + pixel * 2); layoutParams.setMargins(0, 0, pixel / 2, bottomNavigationView.getMeasuredHeight() + pixel * 2);
} }
if (savedInstanceState != null) {
if (savedInstanceState.getBoolean(KEY_IS_GRID_VISIBLE, false)) {
switchToGridView();
}
int referencePosition = savedInstanceState.getInt(KEY_SAVED_LIST_POSITION);
Log_OC.v(TAG, "Setting grid position " + referencePosition);
scrollToPosition(referencePosition);
}
return v; return v;
} }
@ -483,6 +463,14 @@ public class ExtendedListFragment extends Fragment
mTops = savedInstanceState.getIntegerArrayList(KEY_TOPS); mTops = savedInstanceState.getIntegerArrayList(KEY_TOPS);
mHeightCell = savedInstanceState.getInt(KEY_HEIGHT_CELL); mHeightCell = savedInstanceState.getInt(KEY_HEIGHT_CELL);
setMessageForEmptyList(savedInstanceState.getString(KEY_EMPTY_LIST_MESSAGE)); setMessageForEmptyList(savedInstanceState.getString(KEY_EMPTY_LIST_MESSAGE));
if (savedInstanceState.getBoolean(KEY_IS_GRID_VISIBLE, false) && getRecyclerView().getAdapter() != null) {
switchToGridView();
}
int referencePosition = savedInstanceState.getInt(KEY_SAVED_LIST_POSITION);
Log_OC.v(TAG, "Setting grid position " + referencePosition);
scrollToPosition(referencePosition);
} else { } else {
mIndexes = new ArrayList<>(); mIndexes = new ArrayList<>();
mFirstPositions = new ArrayList<>(); mFirstPositions = new ArrayList<>();

View file

@ -200,10 +200,6 @@ public class OCFileListFragment extends ExtendedListFragment implements OCFileLi
} }
searchFragment = currentSearchType != null; searchFragment = currentSearchType != null;
if (isGridViewPreferred(getCurrentFile())) {
switchToGridView();
}
} }
/** /**
@ -352,8 +348,11 @@ public class OCFileListFragment extends ExtendedListFragment implements OCFileLi
onMessageEvent(searchEvent); onMessageEvent(searchEvent);
} }
setTitle(); if (isGridViewPreferred(getCurrentFile())) {
switchToGridView();
}
setTitle();
} }
private void prepareCurrentSearch(SearchEvent event) { private void prepareCurrentSearch(SearchEvent event) {