android - java.lang.RuntimeException : Can't create handler inside thread that has not called Looper. 准备()

标签 android error-handling

嗨,我的代码有问题..我的代码是

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)

如果 Activity 将数据保存到服务器,我命令进度条可以运行,但如果不是这样就不起作用..我应该怎么做才能解决这个问题??

最佳答案

可能由于您在其中使用 Activity 上下文的线程而出现错误。

你应该使用 AsyncTask而不是普通线程。 在 AsyncTask 中,有一个方法 onPreExecute()onPostExecute() 在主线程上执行,还有一个方法 doInBackground()将在后台执行,以便您可以轻松实现长期运行过程。

可以引用this example

关于android - java.lang.RuntimeException : Can't create handler inside thread that has not called Looper. 准备(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9713618/

相关文章:

android - 对于 Android Gradle 插件 4.1.0 中的库项目,版本属性不起作用

python - Django:如何正确处理自定义 form_valid() 的错误

apache-flex - 如何捕获Flex中的所有异常?

php - 用于 PHP sqlsrv_connect() 的 SQL Server 驱动程序使用忽略的错误填充 PHP 错误日志

python - 在点距条件下选择行

android - 将 EditText 定位在键盘上方

java - React Native,Android 日志。

android - 在Webview中长按-应用崩溃

android - Firebase android错误-java.util.zip.ZipException:重复的条目:com/google/android/gms/common/api/zzd.class

swift - 展开 optional 包装时意外发现nil,可在iPhone上的SIM卡崩溃中工作