Minimize the App and keep the array in the GridView? - Expert on Android

0

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)  .

    
asked by Bryan B Weiss 09.09.2016 в 02:21
source

0 answers