From c9e8513b8e3167d3ca3a703d4ee614d27f36afa0 Mon Sep 17 00:00:00 2001 From: misaochan Date: Sat, 3 Sep 2016 17:47:07 +1200 Subject: [PATCH] Lock screen during loading to prevent AsyncTask screen config crash --- .../commons/nearby/NearbyListFragment.java | 21 ++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyListFragment.java b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyListFragment.java index 78a5d01af..5988bedcb 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/NearbyListFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/NearbyListFragment.java @@ -3,6 +3,8 @@ package fr.free.nrw.commons.nearby; import android.content.Context; import android.content.Intent; +import android.content.pm.ActivityInfo; +import android.content.res.Configuration; import android.net.Uri; import android.os.AsyncTask; import android.os.Bundle; @@ -103,6 +105,7 @@ public class NearbyListFragment extends ListFragment { @Override protected void onPreExecute() { super.onPreExecute(); + lockScreenOrientation(); } @Override @@ -120,11 +123,10 @@ public class NearbyListFragment extends ListFragment { @Override protected void onPostExecute(List result) { super.onPostExecute(result); + progressBar.setVisibility(View.GONE); + unlockScreenOrientation(); mAdapter = new NearbyAdapter(getActivity(), places); - - progressBar.setVisibility(View.GONE); - ListView listview = (ListView) getView().findViewById(R.id.listview); listview.setAdapter(mAdapter); @@ -153,6 +155,19 @@ public class NearbyListFragment extends ListFragment { } } + private void lockScreenOrientation() { + int currentOrientation = getResources().getConfiguration().orientation; + if (currentOrientation == Configuration.ORIENTATION_PORTRAIT) { + getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); + } else { + getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); + } + } + + private void unlockScreenOrientation() { + getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR); + } + private class NearbyAdapter extends ArrayAdapter { public List placesList;