android - App Freez and UI Blocking -
hy!
i have 2 classes:
main:
public class main extends activity { /** called when activity first created. */ @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); //setcontentview(r.layout.main); startactivityforresult(new intent(main.this, login.class), 1); } }
login:
public class login extends activity{ progressdialog pd = null; @override protected void oncreate(bundle savedinstancestate) { // todo auto-generated method stub super.oncreate(savedinstancestate); setcontentview(r.layout.login); final edittext user = (edittext)findviewbyid(r.id.login_etuser); final edittext pw = (edittext)findviewbyid(r.id.login_etpw); button btlogin = (button)findviewbyid(r.id.login_btlog); final thread thread = new thread (){ public void run() { try { string result = ""; result = postdata(user.gettext().tostring(),pw.gettext().tostring()); final jsonobject jobject = new jsonobject(result); jsonobject menuobject = jobject.getjsonobject("responsedata"); log.e("xxx", menuobject.getstring("session_id")); //pd.dismiss(); } catch (exception e) { log.e("xxx", e.getmessage()); } }; }; btlogin.setonclicklistener(new onclicklistener() { @override public void onclick(view v) { if (!user.gettext().tostring().equals("") && !pw.gettext().tostring().equals("")) { thread.run(); } } }); } public string postdata(final string user, final string pw) { // create new httpclient , post header httpclient httpclient = new defaulthttpclient(); httppost httppost = new httppost("http://surfkid.redio.de/login"); string result; bufferedreader in = null; try { // add data list<namevaluepair> namevaluepairs = new arraylist<namevaluepair>(2); namevaluepairs.add(new basicnamevaluepair("username", user)); namevaluepairs.add(new basicnamevaluepair("password", md5(pw))); httppost.setentity(new urlencodedformentity(namevaluepairs)); // execute http post request httpresponse response = httpclient.execute(httppost); if(response != null){ in = new bufferedreader(new inputstreamreader(response.getentity().getcontent())); stringbuffer sb = new stringbuffer(""); string line = ""; string nl = system.getproperty("line.separator"); while ((line = in.readline()) != null) { sb.append(line + nl); } in.close(); result = sb.tostring(); return result; } } catch (clientprotocolexception e) { log.e("xxx", e.getmessage()); } catch (ioexception e) { log.e("xxx", e.getmessage()); } return null; } private string md5(string in) { messagedigest digest; try { digest = messagedigest.getinstance("md5"); digest.reset(); digest.update(in.getbytes()); byte[] = digest.digest(); int len = a.length; stringbuilder sb = new stringbuilder(len << 1); (int = 0; < len; i++) { sb.append(character.fordigit((a[i] & 0xf0) >> 4, 16)); sb.append(character.fordigit(a[i] & 0x0f, 16)); } return sb.tostring(); } catch (nosuchalgorithmexception e) { e.printstacktrace(); } return null; } }
logcat:
01-25 09:24:57.641: error/androidruntime(31148): fatal exception: main 01-25 09:24:57.641: error/androidruntime(31148): java.lang.nullpointerexception: println needs message 01-25 09:24:57.641: error/androidruntime(31148): @ android.util.log.println_native(native method) 01-25 09:24:57.641: error/androidruntime(31148): @ android.util.log.e(log.java:215) 01-25 09:24:57.641: error/androidruntime(31148): @ android.skiptvad.login$1.run(login.java:59) 01-25 09:24:57.641: error/androidruntime(31148): @ android.skiptvad.login$2.onclick(login.java:75) 01-25 09:24:57.641: error/androidruntime(31148): @ android.view.view.performclick(view.java:2461) 01-25 09:24:57.641: error/androidruntime(31148): @ android.view.view$performclick.run(view.java:8888) 01-25 09:24:57.641: error/androidruntime(31148): @ android.os.handler.handlecallback(handler.java:587) 01-25 09:24:57.641: error/androidruntime(31148): @ android.os.handler.dispatchmessage(handler.java:92) 01-25 09:24:57.641: error/androidruntime(31148): @ android.os.looper.loop(looper.java:123) 01-25 09:24:57.641: error/androidruntime(31148): @ android.app.activitythread.main(activitythread.java:4627) 01-25 09:24:57.641: error/androidruntime(31148): @ java.lang.reflect.method.invokenative(native method) 01-25 09:24:57.641: error/androidruntime(31148): @ java.lang.reflect.method.invoke(method.java:521) 01-25 09:24:57.641: error/androidruntime(31148): @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:858) 01-25 09:24:57.641: error/androidruntime(31148): @ com.android.internal.os.zygoteinit.main(zygoteinit.java:616) 01-25 09:24:57.641: error/androidruntime(31148): @ dalvik.system.nativestart.main(native method)
please help!!!
what wrong thread.start in button on click?
i think either menuobject.getstring("session_id")
or e.getmessage()
null
.
also think want use thread.start();
, not thread.run();
. thread documentation.
Comments
Post a Comment