2012-12-26 21 views
0

Je voudrais avoir une aide contextuelle contextuelle lorsque l'utilisateur clique sur un bouton dans un FRAGMENT d'une activité. J'ai essayé d'utiliser le Toast pour effectuer cette action mais en vain. La boîte de dialogue contextuelle ne s'affiche pas (veuillez également noter que les recommandations du Use Toast inside Fragment n'ont pas aidé).Toast dans un fragment ne montre pas

Mon code dans la classe fragment est écrit ci-dessous:

  final Button help = (Button) view.findViewById(R.id.help_button); 
     del.setOnClickListener(new View.OnClickListener(){ 
     public void onClick(View v) { 
      Context context = (TabsActivity) getActivity().getApplicationContext(); 
      CharSequence text = "Hello toast!"; 
      int duration = Toast.LENGTH_LONG; 
      Toast toast = Toast.makeText(view.getContext(), text, duration); 
      toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0); 
      toast.show(); 
      } 
     }); 

J'ai essayé plusieurs variantes de CONTEXT, dont deux sont représentés dans le code. J'ai également essayé getActivity(), getView().getContext(), getContext() qui sont allés en vain. Pouvez-vous s'il vous plaît aider à comprendre comment mettre le CONTEXTE dans un fragment?

+0

votre contexte (ING) est assez bonne. continuez à utiliser 'view.getContext()' excepté écrire 'v.getContext()'! la plupart du code que j'ai vu totalement oublie d'obtenir le contexte de la vue param. – petey

Répondre

1

dans votre code:

 final Button help = (Button) view.findViewById(R.id.help_button); 
     del.setOnClickListener(new View.OnClickListener(){ 

Shouldnt il lu (Notez que l'aide devient maintenant cet écouteur onclick):

 final Button help = (Button) view.findViewById(R.id.help_button); 
     help.setOnClickListener(new View.OnClickListener(){ 
+0

bonne place avec le nom var – Blundell

+0

également utiliser 'v.getContext()' passé dans le paramètre setonclicklistener. – petey

+0

Merci beaucoup d'avoir signalé. Tirez yah !! Je ne peux pas croire que j'ai raté ça et j'ai passé deux heures à le découvrir !! C'est le diable du copier-coller. – user1124702

5

Utilisez votre contexte d'application, au lieu de l'obtenir à nouveau de la vue . Restez simple et travaillez à partir de là, vous pouvez donc déterminer quel bit cause réellement votre erreur.

exploitation forestière Mettez dans votre code, vous pouvez déterminer quand vos auditeurs onClick sont effectivement utilisés au lieu de compter sur Toast

setOnClickListener(new View.OnClickListener(){ 
    @Override 
    public void onClick(View v) { 
      Log.d("MyTag", "Button 1 was pressed"); 
    } 
} 
4

Utilisez simplement getActivity() pas d'autres choses. N'a pas besoin de Casting ou d'obtenir le contexte de l'application aussi.

J'utilise Toast.makeText(getActivity(), "Simple Toast",1000).show();

et il fonctionne pour moi.

0

Essayez ceci,

Toast toast = Toast.makeText(getActivity().getApplicationContext(), "text", 100); 
toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0); 
toast.show();