Merge branch 'fix-603--translate-categories-crash' into 'master'
Pass through a known good `Context` to `translateCategories` All the good work to make sure that `getActivity()` actually returned a proper context, obtaining a final reference to that known good activity object, and then using that in the background thread is thrown away. The reason was because the `translateCategories` method would go and call `getActivity()` all over again. This changes the `translateCategories` helper function so that it asks for a `Context`. This way, a known good `Context` can be passed in, rather than having to perform a check to see if `getActivity()` is good again. Fixes #603 (Hopefully) See merge request !231
This commit is contained in:
commit
a61fb677bc
@ -100,7 +100,7 @@ public class AvailableAppsFragment extends AppListFragment implements
|
|||||||
protected void onPostExecute(List<String> loadedCategories) {
|
protected void onPostExecute(List<String> loadedCategories) {
|
||||||
adapter.clear();
|
adapter.clear();
|
||||||
categories = loadedCategories;
|
categories = loadedCategories;
|
||||||
ArrayAdapterCompat.addAll(adapter, translateCategories(loadedCategories));
|
ArrayAdapterCompat.addAll(adapter, translateCategories(activity, loadedCategories));
|
||||||
}
|
}
|
||||||
}.execute();
|
}.execute();
|
||||||
}
|
}
|
||||||
@ -114,14 +114,14 @@ public class AvailableAppsFragment extends AppListFragment implements
|
|||||||
/**
|
/**
|
||||||
* Attempt to translate category names with fallback to default name if no translation available
|
* Attempt to translate category names with fallback to default name if no translation available
|
||||||
*/
|
*/
|
||||||
private List<String> translateCategories(List<String> categories) {
|
private static List<String> translateCategories(Context context, List<String> categories) {
|
||||||
List<String> translatedCategories = new ArrayList<>(categories.size());
|
List<String> translatedCategories = new ArrayList<>(categories.size());
|
||||||
Resources res = getResources();
|
Resources res = context.getResources();
|
||||||
String pkgName = getActivity().getPackageName();
|
String pkgName = context.getPackageName();
|
||||||
for (String category : categories) {
|
for (String category : categories) {
|
||||||
String resId = category.replace(" & ", "_").replace(" ", "_").replace("'", "");
|
String resId = category.replace(" & ", "_").replace(" ", "_").replace("'", "");
|
||||||
int id = res.getIdentifier("category_" + resId, "string", pkgName);
|
int id = res.getIdentifier("category_" + resId, "string", pkgName);
|
||||||
translatedCategories.add(id == 0 ? category : getString(id));
|
translatedCategories.add(id == 0 ? category : context.getString(id));
|
||||||
}
|
}
|
||||||
return translatedCategories;
|
return translatedCategories;
|
||||||
}
|
}
|
||||||
@ -134,7 +134,7 @@ public class AvailableAppsFragment extends AppListFragment implements
|
|||||||
categories = AppProvider.Helper.categories(getActivity());
|
categories = AppProvider.Helper.categories(getActivity());
|
||||||
|
|
||||||
ArrayAdapter<String> adapter = new ArrayAdapter<>(
|
ArrayAdapter<String> adapter = new ArrayAdapter<>(
|
||||||
getActivity(), android.R.layout.simple_spinner_item, translateCategories(categories));
|
getActivity(), android.R.layout.simple_spinner_item, translateCategories(getActivity(), categories));
|
||||||
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
|
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
|
||||||
categorySpinner.setAdapter(adapter);
|
categorySpinner.setAdapter(adapter);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user