Fix #2791: NPE when nominating for deletion and leaving screen (#2792)

This commit is contained in:
Ashish Kumar 2019-03-30 15:43:37 +05:30 committed by Adam Jones
parent 6ea1c81304
commit 5fdb6fc77a

View file

@ -2,8 +2,6 @@ package fr.free.nrw.commons.media;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.app.AlertDialog; import android.app.AlertDialog;
import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Intent; import android.content.Intent;
import android.database.DataSetObserver; import android.database.DataSetObserver;
import android.net.Uri; import android.net.Uri;
@ -24,15 +22,6 @@ import android.widget.ScrollView;
import android.widget.Spinner; import android.widget.Spinner;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast; import android.widget.Toast;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.Locale;
import javax.inject.Inject;
import javax.inject.Provider;
import butterknife.BindView; import butterknife.BindView;
import butterknife.ButterKnife; import butterknife.ButterKnife;
import butterknife.OnClick; import butterknife.OnClick;
@ -56,9 +45,14 @@ import fr.free.nrw.commons.utils.DateUtils;
import io.reactivex.Single; import io.reactivex.Single;
import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.schedulers.Schedulers; import io.reactivex.schedulers.Schedulers;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.Locale;
import javax.inject.Inject;
import javax.inject.Provider;
import timber.log.Timber; import timber.log.Timber;
import static android.content.Context.CLIPBOARD_SERVICE;
import static android.view.View.GONE; import static android.view.View.GONE;
import static android.view.View.VISIBLE; import static android.view.View.VISIBLE;
import static android.widget.Toast.LENGTH_SHORT; import static android.widget.Toast.LENGTH_SHORT;
@ -71,7 +65,7 @@ public class MediaDetailFragment extends CommonsDaggerSupportFragment {
private int index; private int index;
private Locale locale; private Locale locale;
private boolean isDeleted = false; private boolean isDeleted = false;
private DeleteTask deleteTask;
public static MediaDetailFragment forMedia(int index, boolean editable, boolean isCategoryImage) { public static MediaDetailFragment forMedia(int index, boolean editable, boolean isCategoryImage) {
MediaDetailFragment mf = new MediaDetailFragment(); MediaDetailFragment mf = new MediaDetailFragment();
@ -336,6 +330,11 @@ public class MediaDetailFragment extends CommonsDaggerSupportFragment {
detailProvider.unregisterDataSetObserver(dataObserver); detailProvider.unregisterDataSetObserver(dataObserver);
dataObserver = null; dataObserver = null;
} }
if (deleteTask != null) {
deleteTask.cancel(true);
deleteTask = null;
}
super.onDestroyView(); super.onDestroyView();
} }
@ -424,10 +423,12 @@ public class MediaDetailFragment extends CommonsDaggerSupportFragment {
.subscribeOn(Schedulers.io()) .subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.subscribe(s -> { .subscribe(s -> {
DeleteTask deleteTask = new DeleteTask(getActivity(), media, reason); if (getActivity() != null) {
deleteTask.execute(); deleteTask = new DeleteTask(getActivity(), media, reason);
isDeleted = true; deleteTask.execute();
enableDeleteButton(false); isDeleted = true;
enableDeleteButton(false);
}
}); });
} }