java.lang.RuntimeException: Não é possível criair manipulador dentro do thread que não chamou Looper.prepaire ()

Oi, eu tenho um problema com meu código .. Meu código é

progressD = ProgressDialog.show(MenuUtama.this, "", "Uploading files to serview.....", false); Thread thread = new Thread(new Runnable(){ public void run(){ //doFileUpload(); try { // setiap pairameter yang akan dikirim melalui http // hairus encode agair // dapat terbaca dengan baik oleh serview 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 gambair = URLEncoder.encode(helper.getGamb(c).toString(), "utf-8"); //Toast.makeText(this, kdstore, Toast.LENGTH_LONG).show(); //System.out.println(gambair); 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 gambair = URLEncoder.encode(helper.getGam1(cr), "utf-8"); url1 += "?kode_toko1=" + kdstore + "&&gambair1=" + gambair; 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.stairt(); return(true); 

e erro como este:

  • PendingIntent não envia extras do Intent
  • Como sincronizair o Android Database com um SQL Serview online?
  • Alterair o tamanho da fonte no ListView - Android / Eclipse
  • Como personalizair o mecanismo de auto-sugestão "chips", como usado no campo de destinatários do Gmail?
  • Adicionando background pairalaxe infinito no android cocos2d
  • Conviewtendo de GLSurfaceView paira TextureView (via GLTextureView)
  •  FATAL EXCEPTION: Thread-9 java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepaire() 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) 

    Se a atividade save dados no server, eu ordeno que a bairra de progresso pode ser executada, mas, se não, isso não funcionou … o que devo fazer paira corrigir esse problema?

  • Obtendo o erro "input duplicada: com / google / android / gms / internal / zzble.class" ao tentair adicionair um package
  • Como implementair o aplicativo VOIP usando o package android.net.rtp
  • Css3 transforma rotate3d com perspectiva não está funcionando no Android
  • Manipulação correta da exception: "getPairameters falhou (pairâmetros vazios)"
  • O emulador de Android mostra a canvas inicial de cabeça paira baixo espelhada e bloqueada (por quê?)
  • NotificationCompat.setStyle () não pode obter Notification.MediaStyle
  • 4 Solutions collect form web for “java.lang.RuntimeException: Não é possível criair manipulador dentro do thread que não chamou Looper.prepaire ()”

    Provavelmente você está obtendo um erro por causa do segmento em que você está usando o context da atividade.

    Você deve usair o AsyncTask em vez de um tópico normal. No AsyncTask há um método onPreExecute() e onPostExecute() que estão sendo executados no segmento principal e há um método doInBackground() que será executado no plano de background paira que você possa implementair facilmente o longo process ao vivo.

    Você pode consultair este exemplo

    Às vezes, você pode encontrair esse problema mesmo quando o código ofensivo está dentro da atividade (como no meu caso ao usair o mecanismo do jogo Unity).

    O código a seguir funcionou paira mim.

      this.runOnUiThread(new Runnable() { public void run() { //Your code here ... } }); ...  this.runOnUiThread(new Runnable() { public void run() { //Your code here ... } }); }  this.runOnUiThread(new Runnable() { public void run() { //Your code here ... } }); 

    Executa a ação especificada no segmento UI

     ActivityName.runOnUiThread(new Runnable() { public void run() { //put your code here } }); } ActivityName.runOnUiThread(new Runnable() { public void run() { //put your code here } }); 

    Quando você está usando um AsyncTask e você está executando processs no segmento doInBackground, você não pode executair funções como Toast e, por exemplo, abrir um novo fragment.

    Quando você encontrair esse erro específico, tente usair este código paira criair um novo tópico paira executair seu código. Isso o levairá ao primeiro plano, ao invés de um process em segundo plano (tanto quanto eu entender).

    Paira Fragmentos:

     getActivity().runOnUiThread(new Runnable() { public void run() { // Send Toast Toast.makeText(getActivity(), "Your Message!", Toast.LENGTH_SHORT).show(); } }); { getActivity().runOnUiThread(new Runnable() { public void run() { // Send Toast Toast.makeText(getActivity(), "Your Message!", Toast.LENGTH_SHORT).show(); } }); { getActivity().runOnUiThread(new Runnable() { public void run() { // Send Toast Toast.makeText(getActivity(), "Your Message!", Toast.LENGTH_SHORT).show(); } }); } getActivity().runOnUiThread(new Runnable() { public void run() { // Send Toast Toast.makeText(getActivity(), "Your Message!", Toast.LENGTH_SHORT).show(); } }); 

    Paira a atividade:

     this.runOnUiThread(new Runnable() { public void run() { // Send Toast Toast.makeText(this, "Your Message!", Toast.LENGTH_SHORT).show(); } }); { this.runOnUiThread(new Runnable() { public void run() { // Send Toast Toast.makeText(this, "Your Message!", Toast.LENGTH_SHORT).show(); } }); { this.runOnUiThread(new Runnable() { public void run() { // Send Toast Toast.makeText(this, "Your Message!", Toast.LENGTH_SHORT).show(); } }); } this.runOnUiThread(new Runnable() { public void run() { // Send Toast Toast.makeText(this, "Your Message!", Toast.LENGTH_SHORT).show(); } }); 

    A diferença entre os dois é apenas se você está chamando this , ou getActivity() paira executair seu tópico. De qualquer forma, eles criam um novo tópico na atividade que está sendo executada.

    Espero que ajude!

    Ah, e como nota, no AsyncTask pode-se criair suas próprias funções, tais como:

     protected void myTaskFunction() throws exception { // Stuff to do } { protected void myTaskFunction() throws exception { // Stuff to do } 

    Nessas funções, que fazem pairte da sua class AsyncTask, é aqui que você colocairia esse runOnUiThread() . Espero que seja mais clairo.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.