I have an application which works with an external API to load images in a GridView, everything works perfectly except when the App is minimized, and it is returned. Launches the Error "The application has stopped" at the time of loading the dialogue "LOADING ..." I read a lot of respect and when it appears it has to do with the lifetime of the fragment or the low RAM in the android device, but I'm really not sure, I leave the code to give me your opinion that it may be wrong since I have tried a lot of possible solutions and failed to repair the Error.
public class FragmentRecent extends Fragment {
GridView grid;
List<ItemRecent> arrayOfLatestImage;
AdapterRecent objAdapter;
ArrayList<String> allListImage, allListImageCatName;
String[] allArrayImage, allArrayImageCatName;
private ItemRecent objAllBean;
private int columnWidth;
JsonUtils util;
public DatabaseHandlerLatest db;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.layout_recent_wallpaper, container, false);
setHasOptionsMenu(true);
grid = (GridView) rootView.findViewById(R.id.latest_grid);
db = new DatabaseHandlerLatest(getActivity());
arrayOfLatestImage = new ArrayList<ItemRecent>();
allListImage = new ArrayList<String>();
allListImageCatName = new ArrayList<String>();
allArrayImage = new String[allListImage.size()];
allArrayImageCatName = new String[allListImageCatName.size()];
util = new JsonUtils(getActivity());
InitializeGridLayout();
grid.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
Intent intslider = new Intent(getActivity(), ActivitySlideImage.class);
intslider.putExtra("POSITION_ID", position);
intslider.putExtra("IMAGE_ARRAY", allArrayImage);
intslider.putExtra("IMAGE_CATNAME", allArrayImageCatName);
startActivity(intslider);
}
});
if (JsonUtils.isNetworkAvailable(getActivity())) {
new MyTask().execute(Config.SERVER_URL + "/api.php?latest=50");
} else {
arrayOfLatestImage = db.getAllData();
if (arrayOfLatestImage.size() == 0) {
Toast.makeText(getActivity(), getResources().getString(R.string.network_first_load), Toast.LENGTH_SHORT).show();
}
setAdapterToListView();
for (int j = 0; j < arrayOfLatestImage.size(); j++) {
objAllBean = arrayOfLatestImage.get(j);
allListImage.add(objAllBean.getImageurl());
allArrayImage = allListImage.toArray(allArrayImage);
allListImageCatName.add(objAllBean.getCategoryName());
allArrayImageCatName = allListImageCatName.toArray(allArrayImageCatName);
}
}
return rootView;
}
private void InitializeGridLayout() {
Resources r = getResources();
float padding = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, Config.GRID_PADDING, r.getDisplayMetrics());
columnWidth = (int) ((util.getScreenWidth() - ((Config.NUM_OF_COLUMNS + 1) * padding)) / Config.NUM_OF_COLUMNS);
grid.setNumColumns(Config.NUM_OF_COLUMNS);
grid.setColumnWidth(columnWidth);
grid.setStretchMode(GridView.NO_STRETCH);
grid.setPadding((int) padding, (int) padding, (int) padding, (int) padding);
grid.setHorizontalSpacing((int) padding);
grid.setVerticalSpacing((int) padding);
}
private class MyTask extends AsyncTask<String, Void, String> {
ProgressDialog pDialog;
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(getActivity());
pDialog.setMessage(getResources().getString(R.string.loading));
pDialog.setCancelable(false);
pDialog.show();
}
@Override
protected String doInBackground(String... params) {
return JsonUtils.getJSONString(params[0]);
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
if (null != pDialog && pDialog.isShowing()) {
pDialog.dismiss();
}
if (null == result || result.length() == 0) {
Toast.makeText(getActivity(), getResources().getString(R.string.network_error), Toast.LENGTH_SHORT).show();
} else {
try {
JSONObject mainJson = new JSONObject(result);
JSONArray jsonArray = mainJson.getJSONArray(JsonConfig.LATEST_ARRAY_NAME);
JSONObject objJson = null;
for (int i = 0; i < jsonArray.length(); i++) {
objJson = jsonArray.getJSONObject(i);
ItemRecent objItem = new ItemRecent();
db.AddtoFavoriteLatest(new ItemRecent(objJson.getString(JsonConfig.LATEST_IMAGE_CATEGORY_NAME), objJson.getString(JsonConfig.LATEST_IMAGE_URL)));
objItem.setCategoryName(objJson.getString(JsonConfig.LATEST_IMAGE_CATEGORY_NAME));
objItem.setImageurl(objJson.getString(JsonConfig.LATEST_IMAGE_URL));
arrayOfLatestImage.add(objItem);
}
} catch (JSONException e) {
e.printStackTrace();
}
for (int j = 0; j < arrayOfLatestImage.size(); j++) {
objAllBean = arrayOfLatestImage.get(j);
allListImage.add(objAllBean.getImageurl());
allArrayImage = allListImage.toArray(allArrayImage);
allListImageCatName.add(objAllBean.getCategoryName());
allArrayImageCatName = allListImageCatName.toArray(allArrayImageCatName);
}
setAdapterToListView();
}
}
}
public void setAdapterToListView() {
objAdapter = new AdapterRecent(getActivity(), R.layout.lsv_item_gridwallpaper, arrayOfLatestImage, columnWidth);
grid.setAdapter(objAdapter);
}
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.main, menu);
}
}
The fragment is displayed in this way in the MainActivity
fragmentTransaction.replace(R.id.frame_container, new FragmentRecent()).commit();
}
Update:
The logcat is the Next. (It is only the part where when entering the app it closes)
09-22 17: 23: 55.420 14245-14245 /? E / AndroidRuntime: FATAL EXCEPTION: main Process: com.anylabs.new, PID: 14245 java.lang.IllegalStateException: Fragment FragmentRecent {41f08b18} not attached to Activity at android.support.v4.app.Fragment.getResources (Fragment.java : 636) at com.anylabs.new.fragments.FragmentRecent $ MyTask.onPostExecute (FragmentRecent.java:147) at com.anylabs.new.fragments.FragmentRecent $ MyTask.onPostExecute (FragmentRecent.java:119) at android.os. AsyncTask.finish (AsyncTask.java:632) at android.os.AsyncTask.access $ 600 (AsyncTask.java:177) at android.os.AsyncTask $ InternalHandler.handleMessage (AsyncTask.java:645) at android.os.Handler. dispatchMessage (Handler.java:102) at android.os.Looper.loop (Looper.java:136) at android.app.ActivityThread.main (ActivityThread.java:5103) at java.lang.reflect.Method.invokeNative (Native Method) at java.lang.reflect.Method.invoke (Method.java:515) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:790) at com.android.internal.os.ZygoteInit .main (ZygoteInit .java: 606) at de.robv.android.xposed.XposedBridge.main (XposedBridge.java:132) at dalvik.system.NativeStart.main (Native Method) .