diff options
Diffstat (limited to 'packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java')
-rw-r--r-- | packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java b/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java index f4be9c5..006f6e9 100644 --- a/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java +++ b/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java @@ -50,6 +50,8 @@ import android.net.Uri; import android.os.AsyncTask; import android.os.Bundle; import android.os.CancellationSignal; +import android.os.Handler; +import android.os.Looper; import android.os.OperationCanceledException; import android.os.Parcelable; import android.provider.DocumentsContract; @@ -135,6 +137,8 @@ public class DirectoryFragment extends Fragment { private final int mLoaderId = 42; + private final Handler mHandler = new Handler(Looper.getMainLooper()); + public static void showNormal(FragmentManager fm, RootInfo root, DocumentInfo doc, int anim) { show(fm, TYPE_NORMAL, root, doc, null, anim); } @@ -297,6 +301,21 @@ public class DirectoryFragment extends Fragment { @Override public void onLoadFinished(Loader<DirectoryResult> loader, DirectoryResult result) { + if (result == null || result.exception != null) { + // onBackPressed does a fragment transaction, which can't be done inside + // onLoadFinished + mHandler.post(new Runnable() { + @Override + public void run() { + final Activity activity = getActivity(); + if (activity != null) { + activity.onBackPressed(); + } + } + }); + return; + } + if (!isAdded()) return; mAdapter.swapResult(result); |