2012-02-28 4 views
8

J'essaie d'exécuter un toast dans la séquence afin d'afficher un flux rss ruuning. Je reçois l'erreur suivante lors de l'exécution: java.lang.RuntimeException: Ce Toast n'a pas été créé avec Toast.makeText()erreur lors de l'affichage toast

Mon code est:

LayoutInflater inflater = getLayoutInflater(); 
View layout = inflater.inflate(R.layout.toast_layout, 
           (ViewGroup) findViewById(R.id.toast_layout_root)); 

ImageView image = (ImageView) layout.findViewById(R.id.toastimage); 
image.setImageResource(R.drawable.bball_icon); 
TextView text = (TextView) layout.findViewById(R.id.toasttext); 

Toast toast = new Toast(getApplicationContext()); 
toast.setView(layout); 
for (int i=0;i<episode_titles.size();i++) 
{ 
    toast.setText(episode_titles.get(i).toString()); 
    toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0); 
    toast.setDuration(Toast.LENGTH_SHORT); 

    toast.show(); 

} 
+0

Pouvez-vous publier le logcat de votre erreur? – caiocpricci2

+0

02-28 11: 11: 10.421: E/AndroidRuntime (9715): java.lang.RuntimeException: Ce Toast n'a pas été créé avec Toast.makeText() – user1163234

+0

En fait, nous avons besoin du logcat qui se réfère à l'erreur réelle, vous avez mentionné en cours d'exécution : java.lang.RuntimeException! – caiocpricci2

Répondre

2

Le Toast U peut spécifier comme ça .. .

Toast.makeText(getApplicationContext(), "hai", Toast.LENGTH_LONG).show(); 

Alors u peut écrire comme ça ...

 String s=episode_titles.get(i).toString(); 
     Toast.makeText(getApplicationContext(), "UrMessage:"+s, Toast.LENGTH_LONG).show(); 
+0

besoin d'une vue personnalisée .. – user1163234

1
Toast.makeText(getApplicationContext(), "your text", Toast.LENGTH_LONG).show(); 

Cela fonctionne pour moi.

+0

besoin d'une vue personnalisée ... – user1163234

4

Vous ne pouvez appeler toast.SetText() si vous avez déjà créé le toast en utilisant l'une des méthodes maketext. Consultez la documentation de la méthode: http://developer.android.com/reference/android/widget/Toast.html#setView(android.view.View)

Dans votre exemple, vous devez mettre à jour le texte en utilisant la TextView plutôt que le Toast

+0

essayé ceci: "text.setText (episode_titles.get (i) .toString()); " mais seulement le dernier résultat de episode_titles – user1163234

2

Vous pouvez utiliser ce

for (int i=0;i<episode_titles.size();i++) 
{ 
    Toast.makeText(getApplicationContext(), episode_titles.get(i).toString(), Toast.LENGTH_LONG).show(); 
} 
+0

Je veux utiliser une vue personnalisée ... – user1163234

0

Essayez ceci:

LayoutInflater inflater = getLayoutInflater(); 
View layout = inflater.inflate(R.layout.toast_layout, 
           (ViewGroup) findViewById(R.id.toast_layout_root)); 

ImageView image = (ImageView) layout.findViewById(R.id.toastimage); 
image.setImageResource(R.drawable.bball_icon); 
TextView text = (TextView) layout.findViewById(R.id.toasttext); 

Toast toast = new Toast(getApplicationContext()); 
toast.setView(layout); 
for (int i=0;i<episode_titles.size();i++) 
{ 
    text.setText(episode_titles.get(i).toString()); 
    toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0); 
    toast.setDuration(Toast.LENGTH_SHORT); 

    toast.show(); 

} 

Faites-moi savoir si cela fonctionne :)

+0

Je ne reçois que le résultat final de la matrice et non l'ensemble ... – user1163234

0
Toast toast = new Toast(getApplicationContext()); 
//your for loop here { 
     toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0); 
     toast.setDuration(Toast.LENGTH_LONG); 
     TextView txt1 = new TextView(this); 
     txt1.setText(R.string.hello); 
     toast.setView(txt1); 
     toast.show(); 
    } 
+0

Je ne comprends pas ... – user1163234

+1

Il n'est pas possible d'ajouter du texte directement, – Sandy09

+0

@Andhrudu Oui, c'est. Regarde ma réponse. – sandalone

14

Pour définir le texte pour porter un toast, vous devez l'initialiser via makeText.

Comme ceci:

Toast toast = Toast.makeText(this, "message", Toast.LENGTH_SHORT); 
    toast.setText("new message"); 
    toast.setGravity(Gravity.CENTER, 0, 0); 
    //other setters 
    toast.show(); 
1

Au lieu de toast.setText(episode_titles.get(i).toString());, utilisez text.setText();.