java.lang.RuntimeException的:内螺纹已经不叫尺蠖prepare无法创建处理器() [英] java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
问题描述
您好,我有一个问题,我的code..my code是
hi i have a problem with my code..my code is
progressD = ProgressDialog.show(MenuUtama.this, "", "Uploading files to server.....", false);
Thread thread = new Thread(new Runnable(){
public void run(){
//doFileUpload();
try {
// setiap parameter yang akan dikirim melalui http
// harus encode agar
// dapat terbaca dengan baik oleh server
Cursor c = helper.getAll1(almagId);
Cursor cr = helper.getUpImage(almagId);
if(c.moveToFirst()){
//progressD = ProgressDialog.show(context, title, message)
do{
String kdstore = URLEncoder.encode(helper.getKdStore(c).toString(), "utf-8");
String nama = URLEncoder.encode(helper.getNama(c).toString(), "utf-8");
String alamat = URLEncoder.encode(helper.getAlamat(c).toString(), "utf-8");
String kdpos = URLEncoder.encode(helper.getKdPos(c).toString(), "utf-8");
String notelp = URLEncoder.encode(helper.getNotel(c).toString(), "utf-8");
String lng = URLEncoder.encode(helper.getlng(c).toString(), "utf-8");
String lat = URLEncoder.encode(helper.getLat(c).toString(), "utf-8");
String perush = URLEncoder.encode(helper.getPerus(c).toString(), "utf-8");
//String gambar = URLEncoder.encode(helper.getGamb(c).toString(), "utf-8");
//Toast.makeText(this, kdstore, Toast.LENGTH_LONG).show();
//System.out.println(gambar);
url += "?kode_toko=" + kdstore + "&&nama=" + nama + "&&alamat=" + alamat +
"&&kode_pos=" + kdpos + "&&no_telp=" + notelp + "&&longitude=" + lng + "&&latitude=" + lat +
"&&perusahaan=" + perush;
getRequest(url);
url = "http://10.234.165.232/upload_get.php";
}while(c.moveToNext());
}
if(cr.moveToFirst()){
do{
String kdstore = URLEncoder.encode(helper.getKdstore1(cr), "utf-8");
String gambar = URLEncoder.encode(helper.getGam1(cr), "utf-8");
url1 += "?kode_toko1=" + kdstore + "&&gambar1=" + gambar;
getRequest1(url1);
url1 = "http://10.234.165.232/upload_get2.php";
}while(cr.moveToNext());
}
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
MenuUtama.this.runOnUiThread(new Runnable(){
public void run() {
if(progressD.isShowing())
progressD.dismiss();
}
});
}
});
thread.start();
return(true);
和这样的错误:
FATAL EXCEPTION: Thread-9
java.lang.RuntimeException:
Can't create handler inside thread that has not called Looper.prepare()
at android.os.Handler.<init>(Handler.java:121)
at android.widget.Toast.<init>(Toast.java:68)
at android.widget.Toast.makeText(Toast.java:231)
at com.sat.alfaloc.MenuUtama.getRequest(MenuUtama.java:160)
at com.sat.alfaloc.MenuUtama$1.run(MenuUtama.java:101)
at java.lang.Thread.run(Thread.java:1096)
如果活动服务器保存数据我所吩咐的进度条可以运行,但如果没有这种不worked..what应该怎么做来解决这个问题?
if activity save data in to server I command the progress bar can run,but if not this not worked..what should i do to fix this problem??
推荐答案
也许你正在因为你使用的是活动的范围内螺纹的错误。
Probably you are getting error because of the thread in which you are using the context of the activity.
您应该使用 AsyncTask的的,而不是一个正常的线程。
在AsyncTask的有在preExecute的方法()
和 onPostExecute()
这是执行主线程并有一个方法 doInBackground()
将在后台执行,这样就可以很容易地实现万岁过程。
You should use the AsyncTask instead of a normal thread.
In AsyncTask there is a method onPreExecute()
and onPostExecute()
which are executing on the main thread and there is a method doInBackground()
which will execute on background so that you can easily implement the long live process.
您可以参考这个例子
这篇关于java.lang.RuntimeException的:内螺纹已经不叫尺蠖prepare无法创建处理器()的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!