2016-07-11 1 views
-1

Dans le code suivant, mon toast n'est pas affiché. Cependant, j'obtiens l'erreur "RuntimeException: Impossible de créer un gestionnaire dans le thread qui n'a pas appelé Looper.prepare()". J'ai essayé Add_City.this et getApplicationContextPourquoi mon pain grillé n'affiche pas

try { 
       BufferedReader reader = new BufferedReader(
         new InputStreamReader(is, "iso-8859-1"), 8); 
       StringBuilder sb = new StringBuilder(); 
       while ((line = reader.readLine()) != null) { 
        sb.append(line + "\n"); 
       } 
       is.close(); 
       result = sb.toString(); 

       JSONObject json_data = new JSONObject(result); 
       code=(json_data.getInt("code")); 
       System.out.println(code); 
       if(code==1) 
       { 
        Toast.makeText(Add_City.this, "Inserted Successfully",Toast.LENGTH_SHORT).show(); 
       } 
       else 
       { 
        Toast.makeText(Add_City.this, "Sorry, City Already Available",Toast.LENGTH_LONG).show(); 
       } 
       Log.i("TAG", "Result Retrieved"); 
      } catch (Exception e) { 
       Log.i("TAG", e.toString()); 
      } 
+1

Peut être une exception lorsque vous ouvrez un flux ou analyseur JSON – phongvan

+1

est-System.out.println (code); être imprimé dans votre console. Sinon, votre exécution n'atteint jamais ce morceau de code. Vérifiez si Log.i ("TAG", e.toString()); est connecté à la console. Si oui, vous avez une exception. Résolvez l'exception et vous devriez obtenir votre toast. – Tony

+0

comment puis-je résoudre? – AndroidBoy

Répondre

0

Si vous obtenez,

Caused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()

Je crois que vous appelez votre pain grillé dans un thread de travail. Par exemple, doInBackground() de AsyncTask. Toast ne doit être appelé que dans le thread de l'interface utilisateur.

Essayez ceci,

new AsyncTask<Integer, Void, Integer>() { 
     @Override 
     protected Integer doInBackground(Integer[] params) { 
      int code = 1; //your logic here. 
      return code; 
     } 

     @Override 
     protected void onPostExecute(Integer code) { 
      super.onPostExecute(code); 
      if(code==1) 
      { 
       Toast.makeText(Add_City.this, "Inserted Successfully",Toast.LENGTH_SHORT).show(); 
      } 
      else 
      { 
       Toast.makeText(Add_City.this, "Sorry, City Already Available",Toast.LENGTH_LONG).show(); 
      } 

     } 
    }.execute(); 
+0

oui à droite, alors voici le résultat obtenu ainsi – AndroidBoy

+0

@AndroidBoy, S'il vous plaît accepter la réponse ci-dessus si vous le trouvez satisfaisant. – Tony

0

Je suppose Soit vous obtenez une exception ou le code pour montrer le toast est de ne pas être en cours d'exécution sur le thread principal.

Essayez d'utiliser cette

runOnUiThread(new Runnable() { 
      public void run() { 
      //Your toast here 
Toast.makeText(Add_City.this, "Sorry, City Already Available",Toast.LENGTH_LONG).show(); 
     } 
    }); 
+0

ok je peux déboguer mon App obtenir ce résultat {"code": "0"} – AndroidBoy

+0

puis votre code ne s'exécute pas sur le thread principal – Nitesh

+0

comment puis-je empêcher? – AndroidBoy