android - Where should I add in my alertdialog and how to get the value in the json? -
tutorial link used: http://www.androidhive.info/2012/08/android-session-management-using-shared-preferences/
problem is: have working login , sign activity application. however, want prompt alert dialog after users click login/sign button show information.
i followed tutorial link above , created alertdialogmanager.java. code login button:
try{ int success = json.getint(tag_success); //string message = json.getstring(tag_message); //log.v("signup", "checkpoint 3"); if (success == 1) { session.createloginsession(email); intent = new intent(getapplicationcontext(), home.class); startactivity (i); finish(); }else{ //failed login } } catch (jsonexception e){ e.printstacktrace(); } i tried adding alertdialog code in section when application failed log user in. alertdialog code:
alert.showalertdialog(login.this,"login failed", "bla bla bla", false); whenever tried click log in button, whole application crashed , show me logcat below:
05-15 10:08:55.641: w/dalvikvm(2338): threadid=11: thread exiting uncaught exception (group=0x40a71930) 05-15 10:08:55.701: e/androidruntime(2338): fatal exception: asynctask #1 05-15 10:08:55.701: e/androidruntime(2338): java.lang.runtimeexception: error occured while executing doinbackground() 05-15 10:08:55.701: e/androidruntime(2338): @ java.util.concurrent.futuretask.setexception(futuretask.java:219) 05-15 10:08:55.701: e/androidruntime(2338): caused by: java.lang.runtimeexception: can't create handler inside thread has not called looper.prepare() i still quite new android programming >< can please me out? thanks! tell me else need , post here.
entire code below: public class login extends activity {
private progressdialog pdialog; //alert dialog manager alertdialogmanager alert = new alertdialogmanager(); //session manager sessionmanager session; jsonparser jsonparser = new jsonparser(); edittext c_email; edittext c_password; public static final string domain = "192.168.0.112"; //home //public static final string domain = "172.18.74.146"; //url login private static string url_login = "http://" + domain + "/ichop/login.php"; //json node names private static final string tag_success = "success"; //private static final string tag_message = "message"; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_login); //session manager session = new sessionmanager(getapplicationcontext()); //edit text c_email = (edittext) findviewbyid(r.id.c_email); c_password = (edittext) findviewbyid(r.id.c_password); toast.maketext(getapplicationcontext(), "user login status: " + session.isloggedin(), toast.length_long).show(); //login button button login = (button) findviewbyid(r.id.login); //button click event login.setonclicklistener(new view.onclicklistener() { @override public void onclick(view view) { // creating new customer in background new customerlogin().execute(); } }); } class customerlogin extends asynctask<string, string, string> { @override protected void onpreexecute() { super.onpreexecute(); pdialog = new progressdialog(login.this); pdialog.setmessage("logging in!"); pdialog.setindeterminate(false); pdialog.setcancelable(true); pdialog.show(); } protected string doinbackground(string... args){ string email = c_email.gettext().tostring(); string password = c_password.gettext().tostring(); //building parameters list<namevaluepair> params = new arraylist<namevaluepair>(); params.add(new basicnamevaluepair("email", email)); params.add(new basicnamevaluepair("password", password)); /** log.d("c_email", email); log.d("c_password", password); **/ //getting json object jsonobject json = jsonparser.makehttprequest(url_login, "post", params); log.v("signup", "checkpoint 1"); //check log cat response log.d("create response", json.tostring()); log.v("signup", "checkpoint 2"); //check success tag try{ int success = json.getint(tag_success); //string message = json.getstring(tag_message); //log.v("signup", "checkpoint 3"); if (success == 1) { session.createloginsession(email); intent = new intent(getapplicationcontext(), home.class); startactivity (i); finish(); }else{ //failed login } } catch (jsonexception e){ e.printstacktrace(); } return null; } protected void onpostexecute(string file_url){ pdialog.dismiss(); } } @override public boolean oncreateoptionsmenu(menu menu) { // inflate menu; adds items action bar if present. getmenuinflater().inflate(r.menu.login, menu); return true; } public void signup (view view) { intent signup = new intent (this, signup.class); startactivity(signup); } }
it seems calling intent , alert dialog in doinbackground, need call intent or alert dialog in onpostexceute.
try executing in onpostexecute
if (success == 1) { session.createloginsession(email); intent = new intent(getapplicationcontext(), home.class); startactivity (i); finish(); }else{ alert.showalertdialog(login.this,"login failed", "bla bla bla", false); } let me know if works.
Comments
Post a Comment