android - Starting new activity from asynctask in tabhostView -
i have problem code:
i working on app requires log in. app consists of loading screen , tabview 4 tabs. last tab activity wil let login. have set edittext views here , login button.
the login activity done far here's code:
package com.appsoweb.kvodeventer; import org.json.jsonobject; import android.app.activity; import android.app.progressdialog; import android.content.intent; import android.os.asynctask; import android.os.bundle; import android.util.log; import android.view.view; import android.view.view.onclicklistener; import android.widget.button; import android.widget.edittext; public class kvomeldingen extends activity { public static final jsonobject jsonresult = null; button blogin, bcreateaccount, bresetpassword; edittext etusername, etpassword; static string username; static string password; public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.meldingen); final edittext etusername = (edittext) findviewbyid(r.id.etusername); final edittext etpassword = (edittext) findviewbyid(r.id.etpassword); button blogin = (button) findviewbyid(r.id.blogin); button bcreateaccount = (button) findviewbyid(r.id.bcreateaccount); button bresetpassword = (button) findviewbyid(r.id.bresetpassword); blogin.setonclicklistener(new onclicklistener() { @override public void onclick(view v) { if (etusername.length() <= 0) { etusername.seterror("veld mag niet leeg zijn"); } else if (etpassword.length() <= 0) { etpassword.seterror("veld mag niet leeg zijn"); } else { username = etusername.gettext().tostring(); password = etpassword.gettext().tostring(); } logintask ndlt = new logintask(); ndlt.execute(); } }); bcreateaccount.setonclicklistener(new onclicklistener() { @override public void onclick(view arg0) { // doe iets hier....... } }); bresetpassword.setonclicklistener(new onclicklistener() { @override public void onclick(view v) { // doe iets hier........ } }); } public static string getusername() { return username; } public static string getpassword() { return password; } class logintask extends asynctask<void, void, jsonobject> { progressdialog waitingdialog; @override protected void onpreexecute() { waitingdialog = new progressdialog(kvomeldingen.this); waitingdialog.setmessage("laden..."); waitingdialog.show(); super.onpreexecute(); } @override protected jsonobject doinbackground(void... params) { jsonobject json = jsonfunctionlogin .getjsonloginresult("http://api.crossalertdeventer.nl/login.json"); return json; } @override protected void onpostexecute(jsonobject json) { super.onpostexecute(json); if (waitingdialog.isshowing()) { waitingdialog.dismiss(); log.d("iets gebeurt", "gedaan"); } try { string loginresult = json.getstring("login"); string useridresult = json.getstring("user_id"); log.d("loginresult", loginresult); log.d("loginuserid", useridresult); json = null; if (loginresult == "succes"){ // open activity listview. } else { // don't show items , give error message. } } catch (exception e) { log.e("kvomeldingen", "error" + e.getmessage()); } } } }
you can see authentication happens in background.
now see if statement block on postexecute method: want open activity if user succesfully logged in, loads json web , puts in list item.
now don't know how that. because if use intent, new listactivity opened not within tabview of starting activity. how can this?
i did similar, try this. pass activity asynctask class , save member variable. in onpostexecute() method, call method main activity open new activity or show error message. worked me!! ;-)
some code:
public logintask(activity parentactivity) { mparentactivity = parentactivity; } @override protected void onpostexecute(jsonobject json) { ... if (loginresult == "succes"){ mparentactivity.opennewactivity(json); } else { mparentactivity.showerrormessage("error"); } ... }
Comments
Post a Comment