Android java.lang.NullPointerException:位于com.example.util.DBHelper.

Android java.lang.NullPointerException:位于com.example.util.DBHelper.,android,nullpointerexception,android-sqlite,Android,Nullpointerexception,Android Sqlite,我有一个名为PopularFragment.java的片段,我从服务器获取图像,然后将它们显示到recyclerview中。通常它工作得很好,但有时应用程序会因NullPointerException而崩溃 大众碎片: package com.apphics.minimalwallpapers; import android.content.Context; import android.os.AsyncTask; import android.os.Bundle; import androi

我有一个名为PopularFragment.java的片段,我从服务器获取图像,然后将它们显示到recyclerview中。通常它工作得很好,但有时应用程序会因NullPointerException而崩溃

大众碎片:

package com.apphics.minimalwallpapers;

import android.content.Context;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.app.Fragment;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;

import com.example.adapter.AdapterImage;
import com.example.item.ItemPhotos;
import com.example.util.Constant;
import com.example.util.DBHelper;
import com.example.util.EndlessRecyclerViewScrollListener;
import com.example.util.JsonUtils;
import com.pnikosis.materialishprogress.ProgressWheel;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.lang.ref.WeakReference;
import java.util.ArrayList;


public class PopularFragment extends Fragment {

    DBHelper dbHelper;
    GridLayoutManager lLayout;
    RecyclerView recyclerView;
    AdapterImage adapterImage;
    ArrayList<ItemPhotos> arrayOfLatestImage;
    SwipeRefreshLayout mSwipeRefreshLayout;
    ProgressWheel pbar;
    TextView txt_no;
    int spaceInPixels = 10;
    Boolean isOver = false;

    public PopularFragment newInstance() {
        PopularFragment fragment = new PopularFragment();
        return fragment;
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        View rootView = inflater.inflate(R.layout.fragment_latest, container, false);
        pbar=(ProgressWheel) rootView.findViewById(R.id.progressBar1);

        mSwipeRefreshLayout = (SwipeRefreshLayout) rootView.findViewById(R.id.activity_main_swipe_refresh_layout);
        mSwipeRefreshLayout.setColorSchemeResources(R.color.colorAccent);

        dbHelper = new DBHelper(getActivity().getApplicationContext());

        arrayOfLatestImage=new ArrayList<ItemPhotos>();

        lLayout = new GridLayoutManager(getActivity(), 2);
        lLayout.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
            @Override
            public int getSpanSize(int position) {
                return adapterImage.isHeader(position) ? lLayout.getSpanCount() : 1;
            }
        });


        recyclerView = (RecyclerView)rootView.findViewById(R.id.recyclerView_latest);
        recyclerView.setHasFixedSize(true);
        recyclerView.setLayoutManager(lLayout);





        recyclerView.addOnScrollListener(new EndlessRecyclerViewScrollListener(lLayout) {
            @Override
            public void onLoadMore(int p, int totalItemsCount) {
                arrayOfLatestImage.add(null);
                adapterImage.notifyItemInserted(arrayOfLatestImage.size() - 1);
                arrayOfLatestImage.remove(arrayOfLatestImage.size() - 1);
                adapterImage.notifyItemRemoved(arrayOfLatestImage.size());
                if(!isOver) {
                    //                    list_url.clear();
                    new Handler().postDelayed(new Runnable() {
                        @Override
                        public void run() {
                            new MyTask(getActivity().getApplicationContext()).execute(Constant.POPULAR_URL);
                        }
                    }, 2000);
                } else {
                    adapterImage.hideHeader();
                    //Toast.makeText(getActivity(), "No more data", Toast.LENGTH_SHORT).show();
                }
            }
        });

        mSwipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
            @Override
            public void onRefresh() {
                refreshContent();
            }
        });


        if (JsonUtils.isNetworkAvailable(getActivity())) {
            new MyTask(getActivity().getApplicationContext()).execute(Constant.POPULAR_URL);
        } else {
            arrayOfLatestImage = dbHelper.getAllDataPopular("popular");
            if(arrayOfLatestImage.size()==0) {
                Toast.makeText(getActivity(), "Please connect to internet to load Images ", Toast.LENGTH_SHORT).show();
                pbar.setVisibility(View.GONE);
            } else {
                adapterImage = new AdapterImage(getActivity(),arrayOfLatestImage);
                recyclerView.setAdapter(adapterImage);
                pbar.setVisibility(View.GONE);
            }
        }
        return rootView;
    }

    private class MyTask extends AsyncTask<String, Void, String> {

        private final WeakReference<Context> contextReference;

        public MyTask(Context context) {

            this.contextReference = new WeakReference<Context>(context);
        }

        @Override
        protected void onPreExecute() {
            super.onPreExecute();

            Context context = this.contextReference.get();
            if(context != null) {

                if (arrayOfLatestImage.size() == 0) {
                    pbar.setVisibility(View.VISIBLE);
                }
            }
        }

        @Override
        protected String doInBackground(String... params) {
            return JsonUtils.getJSONString(params[0]);
        }

        @Override
        protected void onPostExecute(String result) {
            super.onPostExecute(result);

            Context context = this.contextReference.get();
            if(context != null) {

                if (arrayOfLatestImage.size() == 0) {
                    pbar.setVisibility(View.INVISIBLE);
                }

                if (null == result || result.length() == 0) {
                    Toast.makeText(getActivity(), "Something Went Wrong! Please check your internet and reload", Toast.LENGTH_SHORT).show();

                } else {

                    try {
                        JSONObject mainJson = new JSONObject(result);
                        JSONArray jsonArray = mainJson.getJSONArray(Constant.TAG_ROOT);

                        if (jsonArray.length() <= arrayOfLatestImage.size() + 40) {
                            isOver = true;
                        }

                        int a = arrayOfLatestImage.size();
                        int b;
                        b = 40;

                        JSONObject objJson = null;
                        for (int i = a; i < a + b; i++) {
                            objJson = jsonArray.getJSONObject(i);

                            String id = objJson.getString(Constant.TAG_WALL_ID);
                            String cid = objJson.getString(Constant.TAG_CAT_ID);
                            String img = objJson.getString(Constant.TAG_WALL_IMAGE);
                            String img_thumb = objJson.getString(Constant.TAG_WALL_IMAGE_THUMB);
                            String cat_name = objJson.getString(Constant.TAG_CAT_NAME);
                            String views = objJson.getString(Constant.TAG_WALL_VIEWS);

                            ItemPhotos objItem = new ItemPhotos(id, cid, img, img_thumb, cat_name, views);

                            dbHelper.addtoFavorite(objItem, "popular");
                            arrayOfLatestImage.add(objItem);
                        }

                    } catch (JSONException e) {
                        e.printStackTrace();
                        isOver = true;
                    }
                    setAdapterToListview();
                }
            }

        }
    }

    public void setAdapterToListview() {
        if(arrayOfLatestImage.size()<41) {
            adapterImage = new AdapterImage(getActivity(),arrayOfLatestImage);
            recyclerView.setAdapter(adapterImage);
        } else {
            adapterImage.notifyDataSetChanged();
        }

        //setExmptTextView();
    }

    /*private void setExmptTextView() {
        if(adapterImage.getItemCount()==0) {
            txt_no.setVisibility(View.VISIBLE);
        } else{
            txt_no.setVisibility(View.INVISIBLE);
        }
    }*/

    public void showToast(String msg) {
        Toast.makeText(getActivity(), msg, Toast.LENGTH_LONG).show();
    }

    @Override
    public void onResume() {
        //if(adapterImage!=null && adapterImage.getItemCount() > 0) {
        // adapterImage.notifyDataSetChanged();
        //setExmptTextView();
        // }
        super.onResume();
    }

    private void refreshContent() {
        // TODO implement a refresh

        recyclerView.getRecycledViewPool().clear();
        adapterImage.notifyDataSetChanged();

        arrayOfLatestImage.clear();
        try{
            if (JsonUtils.isNetworkAvailable(getActivity())) {
                new MyTask(getActivity()).execute(Constant.POPULAR_URL);

            } else {
                arrayOfLatestImage = dbHelper.getAllDataPopular("popular");
                if(arrayOfLatestImage.size()==0) {
                    Toast.makeText(getActivity(), "First Time Load Application from Internet ", Toast.LENGTH_SHORT).show();
                } else {
                    adapterImage = new AdapterImage(getActivity(),arrayOfLatestImage);
                    recyclerView.setAdapter(adapterImage);
                }
            }
        } catch (IndexOutOfBoundsException e) {
            e.printStackTrace();
        }



        mSwipeRefreshLayout.setRefreshing(false); // Disables the refresh icon
    }
}
DBHelper.java:

package com.example.util;

import android.content.Context;
import android.content.SharedPreferences;
import android.content.pm.PackageInfo;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

import com.example.item.ItemAbout;
import com.example.item.ItemCategory;
import com.example.item.ItemGIF;
import com.example.item.ItemPhotos;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;

public class DBHelper extends SQLiteOpenHelper {

    private static String DB_NAME = "wallpaper.db";
    private SQLiteDatabase db;
    private final Context context;
    private String DB_PATH;
    String outFileName = "";
    SharedPreferences.Editor spEdit;

    public DBHelper(Context context) {
        super(context, DB_NAME, null, 1);
        this.context = context;
        DB_PATH = "/data/data/" + context.getPackageName() + "/" + "databases/";
    }


    public void createDataBase() throws IOException {

        boolean dbExist = checkDataBase();
        //------------------------------------------------------------
        PackageInfo pinfo = null;
        if (!dbExist) {
            getReadableDatabase();
            copyDataBase();
        }

    }

    private boolean checkDataBase() {
        File dbFile = new File(DB_PATH + DB_NAME);
        return dbFile.exists();
    }

    private void copyDataBase() throws IOException {

        InputStream myInput = context.getAssets().open(DB_NAME);
        String outFileName = DB_PATH + DB_NAME;
        OutputStream myOutput = new FileOutputStream(outFileName);
        byte[] buffer = new byte[1024];
        int length;
        while ((length = myInput.read(buffer)) > 0) {
            myOutput.write(buffer, 0, length);
        }

        // Close the streams
        myOutput.flush();
        myOutput.close();
        myInput.close();

    }

    public Cursor getData(String Query) {
        String myPath = DB_PATH + DB_NAME;
        Cursor c = null;

        try {
            File file = new File(myPath);
            if (file.exists() && !file.isDirectory())
                db = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READWRITE);
                c = db.rawQuery(Query, null);

        } catch (Exception e) {
            Log.e("Err", e.toString());
        }

        return c;
    }

    //UPDATE temp_dquot SET age='20',name1='--',rdt='11/08/2014',basic_sa='100000',plno='814',pterm='20',mterm='20',mat_date='11/08/2034',mode='YLY',dab_sa='100000',tr_sa='0',cir_sa='',bonus_rate='42',prem='5276',basic_prem='5118',dab_prem='100.0',step_rate='for Life',loyal_rate='0',bonus_rate='42',act_mat='1,88,000',mly_b_pr='448',qly_b_pr='1345',hly_b_pr='2664',yly_b_pr='5276'  WHERE uniqid=1
    public void dml(String Query) {
        String myPath = DB_PATH + DB_NAME;
        File file = new File(myPath);
        if (file.exists() && !file.isDirectory())
        if (db == null)
            db = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READWRITE);
        try {
            db.execSQL(Query);
        } catch (Exception e) {
            Log.e("Error", e.toString());
        }
    }

    @Override
    public void onCreate(SQLiteDatabase db) {

    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        // TODO Auto-generated method stub
    }

    public ArrayList<ItemPhotos> getAllData(String table){
        ArrayList<ItemPhotos> arrayList = new ArrayList<ItemPhotos>();

        Cursor cursor = getData("select * from '"+table+"'");
        if(cursor != null && cursor.getCount()>0) {
            cursor.moveToFirst();
            for (int i=0; i<cursor.getCount(); i++) {
                String pid = cursor.getString(cursor.getColumnIndex("pid"));
                String cid = cursor.getString(cursor.getColumnIndex("cid"));
                String cname = cursor.getString(cursor.getColumnIndex("cname"));
                String img = cursor.getString(cursor.getColumnIndex("img"));
                String img_thumb = cursor.getString(cursor.getColumnIndex("img_thumb"));
                String views = cursor.getString(cursor.getColumnIndex("views"));

                ItemPhotos itemPhotos = new ItemPhotos(pid,cid,img,img_thumb,cname,views);
                arrayList.add(itemPhotos);

                cursor.moveToNext();
            }
            cursor.close();
        }

        return arrayList;
    }

    public ArrayList<ItemPhotos> getAllDataPopular(String table){
        ArrayList<ItemPhotos> arrayList = new ArrayList<ItemPhotos>();

        Cursor cursor = getData("select * from '"+table+"'");
        if(cursor != null && cursor.getCount()>0) {
            cursor.moveToFirst();
            for (int i=0; i<cursor.getCount(); i++) {
                String pid = cursor.getString(cursor.getColumnIndex("pid"));
                String cid = cursor.getString(cursor.getColumnIndex("cid"));
                String cname = cursor.getString(cursor.getColumnIndex("cname"));
                String img = cursor.getString(cursor.getColumnIndex("img"));
                String img_thumb = cursor.getString(cursor.getColumnIndex("img_thumb"));
                String views = cursor.getString(cursor.getColumnIndex("views"));

                ItemPhotos itemPhotos = new ItemPhotos(pid,cid,img,img_thumb,cname,views);
                arrayList.add(itemPhotos);

                cursor.moveToNext();
            }
            cursor.close();
        }

        return arrayList;
    }

    public ArrayList<ItemPhotos> getAllDataShuffl(String table){
        ArrayList<ItemPhotos> arrayList = new ArrayList<ItemPhotos>();

        Cursor cursor = getData("select * from '"+table+"'");
        if(cursor != null && cursor.getCount()>0) {
            cursor.moveToFirst();
            for (int i=0; i<cursor.getCount(); i++) {
                String pid = cursor.getString(cursor.getColumnIndex("pid"));
                String cid = cursor.getString(cursor.getColumnIndex("cid"));
                String cname = cursor.getString(cursor.getColumnIndex("cname"));
                String img = cursor.getString(cursor.getColumnIndex("img"));
                String img_thumb = cursor.getString(cursor.getColumnIndex("img_thumb"));
                String views = cursor.getString(cursor.getColumnIndex("views"));

                ItemPhotos itemPhotos = new ItemPhotos(pid,cid,img,img_thumb,cname,views);
                arrayList.add(itemPhotos);

                cursor.moveToNext();
            }
            cursor.close();
        }

        return arrayList;
    }


    public ArrayList<ItemGIF> getAllDataGIF(){
        ArrayList<ItemGIF> arrayList = new ArrayList<ItemGIF>();

        Cursor cursor = getData("select * from gif");
        if(cursor != null && cursor.getCount()>0) {
            cursor.moveToFirst();
            for (int i=0; i<cursor.getCount(); i++) {
                String gid = cursor.getString(cursor.getColumnIndex("gid"));
                String img = cursor.getString(cursor.getColumnIndex("image"));
                String views = cursor.getString(cursor.getColumnIndex("views"));

                ItemGIF itemGIF = new ItemGIF(gid,img,views);
                arrayList.add(itemGIF);

                cursor.moveToNext();
            }
            cursor.close();
        }

        return arrayList;
    }

    public ArrayList<ItemCategory> getAllDataCat(String table){
        ArrayList<ItemCategory> arrayList = new ArrayList<ItemCategory>();

        Cursor cursor = getData("select * from '"+table+"'");
        if(cursor != null && cursor.getCount()>0) {
            cursor.moveToFirst();
            for (int i=0; i<cursor.getCount(); i++) {
                String cid = cursor.getString(cursor.getColumnIndex("cid"));
                String cname = cursor.getString(cursor.getColumnIndex("cname"));
                String img = cursor.getString(cursor.getColumnIndex("img"));
                String img_thumb = cursor.getString(cursor.getColumnIndex("img_thumb"));
                String tot_wall = cursor.getString(cursor.getColumnIndex("tot_wall"));

                ItemCategory itemCategory = new ItemCategory(cid,cname,img,img_thumb,tot_wall);
                arrayList.add(itemCategory);

                cursor.moveToNext();
            }
            cursor.close();
        }

        return arrayList;
    }

    public ArrayList<ItemPhotos> getFavRow(String id, String table)
    {
        ArrayList<ItemPhotos> dataList = new ArrayList<ItemPhotos>();
        // Select All Query
        String selectQuery = "SELECT  * FROM '"+table+"' WHERE pid="+"'"+id+"'";

        Cursor cursor = getData(selectQuery);

        if (cursor != null && cursor.getCount()>0) {
            cursor.moveToFirst();
            for (int i=0; i<cursor.getCount(); i++) {
                String pid = cursor.getString(cursor.getColumnIndex("pid"));
                String cid = cursor.getString(cursor.getColumnIndex("cid"));
                String cname = cursor.getString(cursor.getColumnIndex("cname"));
                String img = cursor.getString(cursor.getColumnIndex("img"));
                String img_thumb = cursor.getString(cursor.getColumnIndex("img_thumb"));
                String views = cursor.getString(cursor.getColumnIndex("views"));

                ItemPhotos itemPhotos = new ItemPhotos(pid,cid,img,img_thumb,cname,views);
                dataList.add(itemPhotos);

                cursor.moveToNext();
            }
            cursor.close();
        }

        // return contact list
        return dataList;
    }

    public ArrayList<ItemGIF> getFavRowGIF(String id)
    {
        ArrayList<ItemGIF> dataList = new ArrayList<ItemGIF>();
        // Select All Query
        String selectQuery = "SELECT * FROM gif WHERE gid="+"'"+id+"'";

        Cursor cursor = getData(selectQuery);

        if (cursor != null && cursor.getCount()>0) {
            cursor.moveToFirst();
            for (int i=0; i<cursor.getCount(); i++) {
                String gid = cursor.getString(cursor.getColumnIndex("gid"));
                String img = cursor.getString(cursor.getColumnIndex("image"));
                String views = cursor.getString(cursor.getColumnIndex("views"));

                ItemGIF itemGIF = new ItemGIF(gid,img,views);
                dataList.add(itemGIF);

                cursor.moveToNext();
            }
            cursor.close();
        }

        // return contact list
        return dataList;
    }

    public ArrayList<ItemPhotos> getCatList(String id, String table)
    {
        ArrayList<ItemPhotos> dataList = new ArrayList<ItemPhotos>();
        // Select All Query
        String selectQuery = "SELECT  * FROM '"+table+"' WHERE cid="+"'"+id+"'";

        Cursor cursor = getData(selectQuery);

        if (cursor != null && cursor.getCount()>0) {
            cursor.moveToFirst();
            for (int i=0; i<cursor.getCount(); i++) {
                String pid = cursor.getString(cursor.getColumnIndex("pid"));
                String cid = cursor.getString(cursor.getColumnIndex("cid"));
                String cname = cursor.getString(cursor.getColumnIndex("cname"));
                String img = cursor.getString(cursor.getColumnIndex("img"));
                String img_thumb = cursor.getString(cursor.getColumnIndex("img_thumb"));
                String views = cursor.getString(cursor.getColumnIndex("views"));

                ItemPhotos itemPhotos = new ItemPhotos(pid,cid,img,img_thumb,cname,views);
                dataList.add(itemPhotos);

                cursor.moveToNext();
            }
            cursor.close();
        }

        // return contact list
        return dataList;
    }

    public void addtoFavorite(ItemPhotos itemPhotos, String table) {
        dml("insert into '"+table+"' (pid,cid,cname,img,img_thumb,views) values ('"+itemPhotos.getId()+"','"+itemPhotos.getCatId()+"','"+itemPhotos.getCName()+"','"+itemPhotos.getImage()+"','"+itemPhotos.getImageThumb()+"','"+itemPhotos.getTotalViews()+"')");
    }

    public void addtoFavoriteGIF(ItemGIF itemGIF) {
        dml("insert into gif (gid,image,views) values ('"+itemGIF.getId()+"','"+itemGIF.getImage()+"','"+itemGIF.getTotalViews()+"')");
    }

    public void addtoCatList(ItemCategory itemCategory, String table) {
        dml("insert into '"+table+"' (cid,cname,img,img_thumb,tot_wall) values ('"+itemCategory.getId()+"','"+itemCategory.getName()+"','"+itemCategory.getImage()+"','"+itemCategory.getImageThumb()+"','"+itemCategory.getTotalWallpaper()+"')");
    }

    public void removeFav(String id) {
        dml("delete from fav where pid = '"+id+"'");
    }

    public void removeFavGIF(String id) {
        dml("delete from gif where gid = '"+id+"'");
    }

    public void updateView(String id, String totview) {
        int views = Integer.parseInt(totview) + 1;
        dml("update catlist set views = '"+String.valueOf(views)+"' where pid = '"+id+"'");
        dml("update fav set views = '"+String.valueOf(views)+"' where pid = '"+id+"'");
        dml("update latest set views = '"+String.valueOf(views)+"' where pid = '"+id+"'");
        dml("update shuffl set views = '"+String.valueOf(views)+"' where pid = '"+id+"'");
    }

    public void updateViewGIF(String id, String totview) {
        int views = Integer.parseInt(totview) + 1;
        dml("update gif set views = '"+String.valueOf(views)+"' where gid = '"+id+"'");
    }

    public void addtoAbout() {
        dml("delete from about");
        dml("insert into about (name,logo,version,author,contact,email,website,desc,developed,privacy) values (" +
            "'"+ Constant.itemAbout.getAppName()+"','"+ Constant.itemAbout.getAppLogo()+"','"+ Constant.itemAbout.getAppVersion()+"'" +
            ",'"+ Constant.itemAbout.getAuthor()+"','"+ Constant.itemAbout.getContact()+"','"+ Constant.itemAbout.getEmail()+"'" +
            ",'"+ Constant.itemAbout.getWebsite()+"','"+ Constant.itemAbout.getAppDesc()+"','"+ Constant.itemAbout.getDevelopedby()+"'" +
            ",'"+ Constant.itemAbout.getPrivacy()+"')");
    }

    public Boolean getAbout() {
        String selectQuery = "SELECT * FROM about";

        Cursor c = getData(selectQuery);

        if (c != null && c.getCount()>0) {
            c.moveToFirst();
            for (int i=0; i<c.getCount(); i++) {
                String appname = c.getString(c.getColumnIndex("name"));
                String applogo = c.getString(c.getColumnIndex("logo"));
                String desc = c.getString(c.getColumnIndex("desc"));
                String appversion = c.getString(c.getColumnIndex("version"));
                String appauthor = c.getString(c.getColumnIndex("author"));
                String appcontact = c.getString(c.getColumnIndex("contact"));
                String email = c.getString(c.getColumnIndex("email"));
                String website = c.getString(c.getColumnIndex("website"));
                String privacy = c.getString(c.getColumnIndex("privacy"));
                String developedby = c.getString(c.getColumnIndex("developed"));

                Constant.itemAbout = new ItemAbout(appname,applogo,desc,appversion,appauthor,appcontact,email,website,privacy,developedby);
            }
            c.close();
            return true;
        } else {
            return false;
        }
    }
}  
这是logcat:

java.lang.NullPointerException: 
  at com.example.util.DBHelper.<init>(DBHelper.java:35)
  at com.example.adapter.AdapterImage.<init>(AdapterImage.java:69)
  at com.apphics.minimalwallpapers.PopularFragment.setAdapterToListview(PopularFragment.java:226)
  at com.apphics.minimalwallpapers.PopularFragment$MyTask.onPostExecute(PopularFragment.java:217)
  at com.apphics.minimalwallpapers.PopularFragment$MyTask.onPostExecute(PopularFragment.java:141)
  at android.os.AsyncTask.finish(AsyncTask.java:651)
  at android.os.AsyncTask.access$500(AsyncTask.java:180)
  at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:668)
  at android.os.Handler.dispatchMessage(Handler.java:102)
  at android.os.Looper.loop(Looper.java:148)
  at android.app.ActivityThread.main(ActivityThread.java:5438)
  at java.lang.reflect.Method.invoke(Native Method:0)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:738)
  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:628)

当ArrayFlatEstimage.size大于或等于41时引发异常。在setAdapterToListview函数的else块中初始化adapterImage。希望有帮助。

活动是一个上下文,停止使用getActivity.getApplicationContext,只使用getActivity。这里的问题是getActivity在框架调用ActivityCreated之前返回null。在此之前调用了onCreateView方法。因此需要移动DBHelper DBHelper=new DBHelpergetActivity.getApplicationContext的初始化;我想这是一个罕见的NPE,它不是复制品。是的。我同意@HenryThanx的所有解决方案。虽然我很少得到这个异常,所以我不能测试它。但我正在做@henry and cricket_007所说的一切。希望不再有例外嘿@Ahamad Anees,我应该在其他部分初始化adapterimage,还是应该添加recyclerView.setAdapteradapterImage;在那之后??你应该继续使用setAdapter。或者简单地将初始化移到if块前面的行,再移到if块前面的行。我添加了:adapterImage=newadapterimagegetactivity,arrayOfLatestImage;recyclerView.setAdapteradapterImage;adapterImage.notifyDataSetChanged;至于我的另一部分。希望这有助于解决此异常..我尝试添加此代码,但每次图像数都不超过41,而不是仅添加更多图像,这会刷新整个recyclerview..我在recycler视图滚动上添加更多图像,因此这对我不起作用..还有其他解决方案吗?