Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e6d419de authored by Jeff Sharkey's avatar Jeff Sharkey Committed by Android (Google) Code Review
Browse files

Merge "Grab Activity reference before leaving fragment." into klp-dev

parents 2845e519 78b13703
Loading
Loading
Loading
Loading
+12 −12
Original line number Diff line number Diff line
@@ -73,7 +73,7 @@ public class CreateDirectoryFragment extends DialogFragment {
                final DocumentsActivity activity = (DocumentsActivity) getActivity();
                final DocumentInfo cwd = activity.getCurrentDirectory();

                new CreateDirectoryTask(displayName).executeOnExecutor(
                new CreateDirectoryTask(activity, cwd, displayName).executeOnExecutor(
                        ProviderExecutor.forAuthority(cwd.authority));
            }
        });
@@ -83,25 +83,26 @@ public class CreateDirectoryFragment extends DialogFragment {
    }

    private class CreateDirectoryTask extends AsyncTask<Void, Void, DocumentInfo> {
        private final DocumentsActivity mActivity;
        private final DocumentInfo mCwd;
        private final String mDisplayName;

        public CreateDirectoryTask(String displayName) {
        public CreateDirectoryTask(
                DocumentsActivity activity, DocumentInfo cwd, String displayName) {
            mActivity = activity;
            mCwd = cwd;
            mDisplayName = displayName;
        }

        @Override
        protected DocumentInfo doInBackground(Void... params) {
            final DocumentsActivity activity = (DocumentsActivity) getActivity();
            final ContentResolver resolver = activity.getContentResolver();

            final DocumentInfo cwd = activity.getCurrentDirectory();

            final ContentResolver resolver = mActivity.getContentResolver();
            ContentProviderClient client = null;
            try {
                client = DocumentsApplication.acquireUnstableProviderOrThrow(
                        resolver, cwd.derivedUri.getAuthority());
                        resolver, mCwd.derivedUri.getAuthority());
                final Uri childUri = DocumentsContract.createDocument(
                        client, cwd.derivedUri, Document.MIME_TYPE_DIR, mDisplayName);
                        client, mCwd.derivedUri, Document.MIME_TYPE_DIR, mDisplayName);
                return DocumentInfo.fromUri(resolver, childUri);
            } catch (Exception e) {
                Log.w(TAG, "Failed to create directory", e);
@@ -113,12 +114,11 @@ public class CreateDirectoryFragment extends DialogFragment {

        @Override
        protected void onPostExecute(DocumentInfo result) {
            final DocumentsActivity activity = (DocumentsActivity) getActivity();
            if (result != null) {
                // Navigate into newly created child
                activity.onDocumentPicked(result);
                mActivity.onDocumentPicked(result);
            } else {
                Toast.makeText(activity, R.string.create_error, Toast.LENGTH_SHORT).show();
                Toast.makeText(mActivity, R.string.create_error, Toast.LENGTH_SHORT).show();
            }
        }
    }