瀏覽代碼

get storage manager, stop if null (this happens while a long async thread, e.g. photo fetching, is cancelled by device orientation changing)

tobiaskaminsky 8 年之前
父節點
當前提交
399ff5802f

+ 2 - 2
src/main/java/com/owncloud/android/ui/adapter/FileListListAdapter.java

@@ -487,13 +487,13 @@ public class FileListListAdapter extends BaseAdapter {
     }
 
     public void setData(ArrayList<Object> objects, ExtendedListFragment.SearchType searchType, FileDataStorageManager storageManager) {
-        if (storageManager != null) {
+        if (storageManager != null && mStorageManager == null) {
             mStorageManager = storageManager;
         }
         mFiles = new Vector<>();
 
         // early exit
-        if (objects.size() > 0) {
+        if (objects.size() > 0 && mStorageManager != null) {
             if (searchType.equals(ExtendedListFragment.SearchType.SHARED_FILTER)) {
                 parseShares(objects);
             } else {

+ 6 - 2
src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java

@@ -1390,10 +1390,14 @@ public class OCFileListFragment extends ExtendedListFragment implements OCFileLi
                 if (getContext() != null && !isCancelled()) {
                     RemoteOperationResult remoteOperationResult = remoteOperation.execute(currentAccount, getContext());
 
+                    FileDataStorageManager storageManager = null;
+                    if (mContainerActivity != null && mContainerActivity.getStorageManager() != null) {
+                        storageManager = mContainerActivity.getStorageManager();
+                    }
+
                     if (remoteOperationResult.isSuccess() && remoteOperationResult.getData() != null
                             && !isCancelled() && searchFragment) {
-                        mAdapter.setData(remoteOperationResult.getData(), currentSearchType,
-                                mContainerActivity.getStorageManager());
+                        mAdapter.setData(remoteOperationResult.getData(), currentSearchType, storageManager);
                     }
 
                     return remoteOperationResult.isSuccess();