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.
Vous n'appelez pas show()
sur la Toast
que vous créez avec makeText()
.
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.
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();
}
Vous pouvez obtenir l'activité en cours avec getActivity ()
Toast.makeText(getActivity(),"Toast your message" ,Toast.LENGTH_SHORT).show();
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();
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();
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.