diff --git a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java index 3b2005172..02378e661 100644 --- a/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/category/CategorizationFragment.java @@ -3,6 +3,7 @@ package fr.free.nrw.commons.category; import android.app.Activity; import android.content.ContentProviderClient; import android.content.Context; +import android.content.DialogInterface; import android.database.Cursor; import android.os.AsyncTask; import android.os.Bundle; @@ -10,10 +11,12 @@ import android.os.Parcel; import android.os.Parcelable; import android.os.RemoteException; import android.support.v4.app.Fragment; +import android.support.v7.app.AlertDialog; import android.text.Editable; import android.text.TextUtils; import android.text.TextWatcher; import android.util.Log; +import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; @@ -26,6 +29,7 @@ import android.widget.EditText; import android.widget.ListView; import android.widget.ProgressBar; import android.widget.TextView; +import android.widget.Toast; import java.util.ArrayList; import java.util.Date; @@ -447,6 +451,47 @@ public class CategorizationFragment extends Fragment { client = getActivity().getContentResolver().acquireContentProviderClient(CategoryContentProvider.AUTHORITY); } + @Override + public void onResume() { + super.onResume(); + + View rootView = getView(); + if (rootView != null) { + rootView.setFocusableInTouchMode(true); + rootView.requestFocus(); + rootView.setOnKeyListener(new View.OnKeyListener() { + @Override + public boolean onKey(View v, int keyCode, KeyEvent event) { + if (event.getAction() == KeyEvent.ACTION_UP && keyCode == KeyEvent.KEYCODE_BACK) { + backButtonDialog(); + return true; + } + return false; + } + }); + } + } + + private void backButtonDialog() { + AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); + + builder.setMessage("Are you sure you want to go back? The image will not have any categories saved.") + .setTitle("Warning"); + builder.setPositiveButton("No", new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int id) { + //No need to do anything, user remains on categorization screen + } + }); + builder.setNegativeButton("Yes", new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int id) { + getActivity().finish(); + } + }); + + AlertDialog dialog = builder.create(); + dialog.show(); + } + @Override public void onDestroy() { super.onDestroy();