web-dev-qa-db-fra.com

Utilisez Toast à l'intérieur du fragment

J'essaie d'afficher un message de pain grillé lorsque l'utilisateur clique sur un bouton à l'intérieur d'un fragment. Le problème est que je ne peux pas accéder à l'activité pour y afficher le pain grillé.

Voici la source de Fragment:

    public class FrgTimes extends Fragment
    {
        ScrollView sv;
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) 
        {
            if (container == null) { return null; }

            sv = (ScrollView)inflater.inflate(R.layout.frg_times, container, false);

            btnTime1.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {

            //******  HERE's the PROBLEM  ********
            Toast.makeText(<The Activity>, "Please long press the key", Toast.LENGTH_LONG );

            }});

            return sv;
        }

et voici ce que j'ai essayé.

Toast.makeText( getActivity()  , ...
Toast.makeText( getView().getContext()  , ...
Toast.makeText( getActivity().getApplicationContext()  , ...
Toast.makeText( sv.getContext()  , ...
Toast.makeText( sv.getRootView().getContext()  , ...

Dans Debug, je peux voir que tous ces codes fonctionnent sans aucune exception, mais aucune variable TOAST n'est affichée.

47
mammadalius

Vous n'appelez pas show() sur la Toast que vous créez avec makeText().

100
CommonsWare

Comme indiqué par alfo888_ibg:

@Override
public void onClick(View arg0) {
   Toast.makeText(activity,"Text!",Toast.LENGTH_SHORT).show();
}

Il suffit de faire:

    Toast.makeText(getActivity(),"Text!",Toast.LENGTH_SHORT).show();

cela a fonctionné pour moi.

48
user2564789

Pour aider une autre personne avec le même problème, la réponse complète à Use Toast inside Fragment

Activity activity = getActivity();

@Override
public void onClick(View arg0) {

    Toast.makeText(activity,"Text!",Toast.LENGTH_SHORT).show();
}
20
alfo888_ibg

Vous pouvez obtenir l'activité en cours avec getActivity ()

Toast.makeText(getActivity(),"Toast your message" ,Toast.LENGTH_SHORT).show();
7
andy bit1

Faire un pain grillé à l'intérieur du fragment 

 Toast.makeText(getActivity(), "Your Text Here!", Toast.LENGTH_SHORT).show();

OR

    Activity activityObj = this.getActivity();

    Toast.makeText(activityObj, "Your Text Here!", Toast.LENGTH_SHORT).show();

OR

Toast.makeText(this, "Your Text Here!", Toast.LENGTH_SHORT).show();
5
Ramesh

user2564789 a bien dit
Mais vous pouvez aussi utiliser this à la place de getActivity()
qui donnera à votre pain grillé la forme suivante


     Toast.makeText(this,"Message",Toast.LENGTH_SHORT).show();
    

1
vaibhav3027

Lorsque vous appelez Toast dans un fragment Android:

1. Activity mActivity=this.getActivity();  

2. Toast.makeText(mActivity,"Text you want to display",Toast.LENGTH_SHORT).show();

Cela fonctionne pour moi.

1
Lakshan Vithana