java - Display alertDialog onPostExecute of AsyncTask Android -


i have asynctask , want show alertdialog when onpostexecute method fired. declared context variable , initialized inside oncreate method like:

mcontext = this; 

then in order show alertdialog on onpostexecute method used following code:

            alertdialog.builder gologin = new alertdialog.builder(mcontext);             gologin.setmessage("test");             gologin.setcancelable(false);             gologin.setpositivebutton("ok",                     new dialoginterface.onclicklistener() {                 public void onclick(dialoginterface dialog, int id) {                     dialog.cancel();                 }             });         alertdialog alertlogin = gologin.create();         alertlogin.show(); 

but following error:

07-10 14:42:09.710: e/androidruntime(12963): java.lang.nullpointerexception: attempt invoke virtual method 'android.content.pm.applicationinfo android.content.context.getapplicationinfo()' on null object reference 07-10 14:42:09.710: e/androidruntime(12963):    @ android.content.contextwrapper.getapplicationinfo(contextwrapper.java:148) 07-10 14:42:09.710: e/androidruntime(12963):    @ android.view.contextthemewrapper.gettheme(contextthemewrapper.java:99) 07-10 14:42:09.710: e/androidruntime(12963):    @ android.app.alertdialog.resolvedialogtheme(alertdialog.java:154) 07-10 14:42:09.710: e/androidruntime(12963):    @ android.app.alertdialog$builder.<init>(alertdialog.java:379) 07-10 14:42:09.710: e/androidruntime(12963):    @ test.test.showalert(test.java:671) 07-10 14:42:09.710: e/androidruntime(12963):    @ test.test.checkresult(test.java:656) 07-10 14:42:09.710: e/androidruntime(12963):    @ test.test$login.onpostexecute(test.java:585) 07-10 14:42:09.710: e/androidruntime(12963):    @ test.test$login.onpostexecute(test.java:1) 07-10 14:42:09.710: e/androidruntime(12963):    @ android.os.asynctask.finish(asynctask.java:632) 07-10 14:42:09.710: e/androidruntime(12963):    @ android.os.asynctask.access$600(asynctask.java:177) 07-10 14:42:09.710: e/androidruntime(12963):    @ android.os.asynctask$internalhandler.handlemessage(asynctask.java:645) 07-10 14:42:09.710: e/androidruntime(12963):    @ android.os.handler.dispatchmessage(handler.java:102) 07-10 14:42:09.710: e/androidruntime(12963):    @ android.os.looper.loop(looper.java:135) 07-10 14:42:09.710: e/androidruntime(12963):    @ android.app.activitythread.main(activitythread.java:5312) 07-10 14:42:09.710: e/androidruntime(12963):    @ java.lang.reflect.method.invoke(native method) 07-10 14:42:09.710: e/androidruntime(12963):    @ java.lang.reflect.method.invoke(method.java:372) 07-10 14:42:09.710: e/androidruntime(12963):    @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:901) 07-10 14:42:09.710: e/androidruntime(12963):    @ com.android.internal.os.zygoteinit.main(zygoteinit.java:696) 

what doing wrong? need pass context in different way?

edit: whole asynctask code:

private class login extends asynctask<void, void, void> {   @override protected void onpreexecute() {     super.onpreexecute();     // showing progress dialog  }  @suppresswarnings("deprecation") @override protected void doinbackground(void... arg0) {     // creating service handler class instance     servicehandler sh = new servicehandler();      // making request url , getting response     list<namevaluepair> params = new arraylist<namevaluepair>();      params.add(new basicnamevaluepair("username", "test"));     string jsonstr = sh.makeservicecall(urltest, servicehandler.post, params);       if (jsonstr != null) {         try {              jsonobject obj = new jsonobject(jsonstr);              error = obj.getboolean("error");             if(!error)             {                 loginresult = true;                 jsonobject array = obj.getjsonobject("response");                 name = array.getstring("name");             }             else             {                 loginresult = false;             }          } catch (jsonexception e) {             e.printstacktrace();         }     } else {      }      return null; }  @override protected void onpostexecute(void result) {     super.onpostexecute(result);     // dismiss progress dialog     //checkresult();     alertdialog.builder reorder = new alertdialog.builder(context);     reorder.setmessage("error");     reorder.setcancelable(true);     reorder.setpositivebutton("ok",             new dialoginterface.onclicklistener() {         public void onclick(dialoginterface dialog, int id) {             dialog.dismiss();         }     });      alertdialog ordererror = reorder.create();     ordererror.show(); }  } 

create constructor of asynctask , this:

private class demotask extends asynctask<void, void, void> {          context context;      public demotask(context mcontext) {         this.context = mcontext;     }          @override         protected void doinbackground(void... params) {             // todo auto-generated method stub             return null;         }          @override         protected void onpostexecute(void result) {             // todo auto-generated method stub             super.onpostexecute(result);              alertdialog.builder gologin = new alertdialog.builder(context);             gologin.setmessage("test");             gologin.setcancelable(false);             gologin.setpositivebutton("ok", new dialoginterface.onclicklistener() {                 public void onclick(dialoginterface dialog, int id) {                     dialog.cancel();                 }             });             alertdialog alertlogin = gologin.create();             alertlogin.show();         }      } 

here mcontext inside oncreate method:

public class myactivity extends activity {  private context mcontext;   @override     protected void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);         setcontentview(r.layout.activity_main);          mcontext = this;          new demotask(mcontext).execute();     } 

Comments