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
Post a Comment