Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a nullobjectreference -


i trying fetch data sqlite database-> displaying in recyclerview -> , on tapping item want start new activity.

but after displaying list of items when tap on 1 of them following error pops up: java.lang.nullpointerexception: attempt invoke virtual method 'java.lang.string android.content.context.getpackagename()' on null object reference

my mainactivityclass:

import android.content.context; import android.content.intent; import android.database.cursor; import android.database.sqlite.sqliteexception; import android.support.annotation.nonnull; import android.support.design.widget.navigationview; import android.support.v4.widget.drawerlayout; import android.support.v7.app.actionbardrawertoggle; import android.support.v7.app.appcompatactivity; import android.os.bundle; import android.support.v7.widget.linearlayoutmanager; import android.support.v7.widget.recyclerview; import android.support.v7.widget.toolbar; import android.view.menuitem; import android.widget.toast; import com.example.blue2dew.trakin.item.item; import com.example.blue2dew.trakin.movieadapter;   import java.util.arraylist;     public class mainactivity extends appcompatactivity {     private drawerlayout mdrawerlayout; private actionbardrawertoggle mtoggle; private navigationview navigationview; private toolbar toolbar; private movie_det movie_det; context context;  private recyclerview recyclerview; private databasehelper databasehelper;  arraylist<item> arraylist=new arraylist<item>(); private cursor cursor; private movieadapter movieadapter;   @override protected void oncreate(bundle savedinstancestate) {     super.oncreate(savedinstancestate);     setcontentview(r.layout.activity_main);       mdrawerlayout=(drawerlayout) findviewbyid(r.id.activity_main);     navigationview=(navigationview)findviewbyid(r.id.navigation_view);     toolbar=(toolbar)findviewbyid(r.id.nav_action);     setsupportactionbar(toolbar);     mtoggle=new actionbardrawertoggle(this,mdrawerlayout,r.string.open,r.string.close);      recyclerview=(recyclerview)findviewbyid(r.id.recycler_view);     mdrawerlayout.adddrawerlistener(mtoggle);     mtoggle.syncstate();      getsupportactionbar().setdisplayhomeasupenabled(true);       navigationview.setnavigationitemselectedlistener(new navigationview.onnavigationitemselectedlistener() {         @override         public boolean onnavigationitemselected(@nonnull menuitem item) {             item.setchecked(true);             mdrawerlayout.closedrawers();             return false;         }     });      loaddatabase();  }   @override public boolean onoptionsitemselected(menuitem item){     if(mtoggle.onoptionsitemselected(item)){         return true;     }      return super.onoptionsitemselected(item); }  public void loaddatabase(){     databasehelper=new databasehelper(mainactivity.this);      try{         databasehelper.checkandcopydatabase();         databasehelper.opendatabase();     }catch(sqliteexception e){         e.printstacktrace();     }       try {         cursor = databasehelper.querydata("select * moviedetails");         if (cursor != null) {             if (cursor.movetofirst()) {                 {                     item itemv = new item();                     itemv.setmoviename(cursor.getstring(2));                     itemv.setreleasedate(cursor.getstring(5));                     itemv.setmovieimage(cursor.getblob(1));                      arraylist.add(itemv);                   } while (cursor.movetonext());             }         }     }catch (sqliteexception e){         e.printstacktrace();     }       linearlayoutmanager linearlayoutmanager=new linearlayoutmanager(getapplicationcontext());     movieadapter=new movieadapter(mainactivity.this,context,arraylist);        recyclerview.sethasfixedsize(true);     recyclerview.setlayoutmanager(linearlayoutmanager);     recyclerview.setadapter(movieadapter);  }    } 

my adapter class:

package com.example.blue2dew.trakin;  import android.app.activity;   import android.content.context; import android.content.intent; import android.support.v7.widget.recyclerview; import android.view.layoutinflater; import android.view.view; import android.view.viewgroup; import android.widget.imageview; import android.widget.textview;   import com.example.blue2dew.trakin.item.item;   import java.util.collections; import java.util.list;    public class movieadapter extends recyclerview.adapter<movieadapter.movieviewholder>  {    activity activity;     list<item> items= collections.emptylist();     context context;   public movieadapter(activity activity,context context, list<item> items){     this.activity=activity;     this.context=context;     this.items=items; } @override public movieviewholder oncreateviewholder(viewgroup parent, int viewtype) {     view view= layoutinflater.from(parent.getcontext()).inflate(r.layout.custom_list_item,parent,false);      movieviewholder movieviewholder=new movieviewholder(view,context,items);     return movieviewholder; }    public void onbindviewholder(movieviewholder holder,final int position) {     holder.movie_name.settext(items.get(position).getmoviename());     holder.release_date.settext(items.get(position).getreleasedate());     holder.imageview.setimagebitmap(items.get(position).getmovieimage());     }  @override public int getitemcount() {     return items.size(); }     public  class movieviewholder extends  recyclerview.viewholder implements  view.onclicklistener{        imageview md_image;      textview md_movie_name;      textview md_length1;      textview md_genre1;      textview md_release_date1;      imageview md_imdb_icon;      textview md_rating1;      textview md_director1;      textview md_synopsis1;       textview movie_name;      textview release_date;      imageview imageview;      list<item> items=collections.emptylist();     context context;      public movieviewholder(view itemview,context context,list<item> items ) {         super(itemview);         this.context=context;         this.items=items;         itemview.setonclicklistener(this);         md_image = (imageview) itemview.findviewbyid(r.id.md_image);         md_director1 = (textview) itemview.findviewbyid(r.id.md_director1);         md_genre1 = (textview) itemview.findviewbyid(r.id.md_genre1);         md_movie_name = (textview) itemview.findviewbyid(r.id.md_movie_name);         md_length1 = (textview) itemview.findviewbyid(r.id.md_length1);         md_release_date1 = (textview) itemview.findviewbyid(r.id.md_release_date1);         md_rating1 = (textview) itemview.findviewbyid(r.id.md_rating1);         md_synopsis1 = (textview)itemview.findviewbyid(r.id.md_synopsis1);         md_imdb_icon = (imageview) itemview.findviewbyid(r.id.md_imdb_icon);          movie_name=(textview) itemview.findviewbyid(r.id.movie_name);         release_date=(textview) itemview.findviewbyid(r.id.release_date);         imageview=(imageview) itemview.findviewbyid(r.id.imageview);       }       @override     public void onclick(view v) {          int position=getadapterposition();         item item=this.items.get(position);         intent intent=new intent (this.context,main2activity.class);         this.context.startactivity(intent);      }  }    } 

my databasehelper class: package com.example.blue2dew.trakin;

import android.content.context; import android.database.cursor; import android.database.sqlite.sqlitedatabase; import android.database.sqlite.sqliteexception; import android.database.sqlite.sqliteopenhelper; import android.os.build; import android.os.environment; import android.util.log;  import java.io.fileoutputstream; import java.io.ioexception; import java.io.inputstream; import java.io.outputstream;    public class databasehelper extends sqliteopenhelper {  private static string db_name="movie.db"; private static string db_path; private sqlitedatabase mydatabase; private final context mycontext;     public databasehelper(context context) {     super(context,db_name , null, 1);     if(build.version.sdk_int>=15){         db_path=context.getapplicationinfo().datadir+"/databases/";     }     else{         db_path= environment.getdatadirectory()+"/data/"+context.getpackagename()+"/databases/";     }     this.mycontext=context; }  @override public void oncreate(sqlitedatabase db) {     //using existing database  creation not needed  }  @override public void onupgrade(sqlitedatabase db, int oldversion, int newversion) {     //the existing database need not upgraded  }  public void checkandcopydatabase(){     boolean dbexist=checkdatabase();     if(dbexist){         log.d("tag","database exists");     }     else {         this.getreadabledatabase();     }     try {         copydatabase();     }     catch (ioexception e){         e.printstacktrace();         log.d("tag","error copy database");     } }  public boolean checkdatabase(){     sqlitedatabase checkdb=null;     try {         string mypath = db_path + db_name;         checkdb = sqlitedatabase.opendatabase(mypath, null, sqlitedatabase.open_readwrite);     }catch (sqliteexception e) {         e.printstacktrace();      }     if(checkdb!=null){         checkdb.close();     }     return checkdb!=null?true:false;  }  public void copydatabase() throws ioexception{     inputstream myinput=mycontext.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);     }     myoutput.flush();     myoutput.close();     myinput.close(); }  public  void opendatabase(){     string mypath=db_path+db_name;     mydatabase=sqlitedatabase.opendatabase(mypath,null, sqlitedatabase.open_readwrite); }  public synchronized void close(){     if(mydatabase!=null){         mydatabase.close();     }     super.close(); }  public cursor querydata(string query){     return  mydatabase.rawquery(query,null); } } 

the error:

e/androidruntime: fatal exception: main process: com.example.blue2dew.trakin, pid: 7430 java.lang.nullpointerexception: attempt invoke virtual method 'java.lang.string android.content.context.getpackagename()' on null object reference @ android.content.componentname.(componentname.java:128) @ android.content.intent.(intent.java:4521) @ com.example.blue2dew.trakin.movieadapter$movieviewholder.onclick(movieadapter.java:127) @ android.view.view.performclick(view.java:5209) @ android.view.view$performclick.run(view.java:21179) @ android.os.handler.handlecallback(handler.java:739) @ android.os.handler.dispatchmessage(handler.java:95) @ android.os.looper.loop(looper.java:148) @ android.app.activitythread.main(activitythread.java:5437) @ java.lang.reflect.method.invoke(native method) @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:726) @ com.android.internal.os.zygoteinit.main(zygoteinit.java:616) 

you can either this,

    @override     public void onclick(view v) {     int position=getadapterposition();     item item=this.items.get(position);     intent intent=new intent (v.getcontext(),main2activity.class);     v.getcontext().startactivity(intent); } 

Comments

Popular posts from this blog

inversion of control - Autofac named registration constructor injection -

verilog - Systemverilog dynamic casting issues -

ios - Change Storyboard View using Seague -