Merge pull request #245 from misaochan/prevent-orientation-crash

Prevent crash when screen config changes
This commit is contained in:
Nicolas Raoul 2016-09-03 14:54:20 +09:00 committed by GitHub
commit 7dd512b2d9
3 changed files with 23 additions and 5 deletions

View file

@ -1,5 +1,8 @@
# Wikimedia Commons for Android
##v1.27
- New feature: List of nearby places without photos
##v1.26
- Fixed bug with overwriting files when multiple images selected

View file

@ -1,7 +1,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="fr.free.nrw.commons"
android:versionCode="44"
android:versionName="1.26" >
android:versionCode="45"
android:versionName="1.27" >
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

View file

@ -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<Place> 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<Place> {
public List<Place> placesList;