Использовать тост внутри фрагмента

Я пытаюсь показать сообщение Toast, когда пользователь нажимает кнопку «Внутри фрагмента». Проблема в том, что я не могу получить доступ к активности, чтобы показать Toast на нем.

Вот источник 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; } 

И вот что я пробовал.

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

В Debug я вижу, что все эти коды работают без каких-либо исключений, но не отображаются TOAST .

Solutions Collecting From Web of "Использовать тост внутри фрагмента"

Вы не вызываете show() на Toast вы создаете с помощью makeText() .

Как указано alfo888_ibg:

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

Просто делать:

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

Это сработало для меня.

Чтобы помочь другим людям с моей же проблемой, полный ответ «Использовать тост внутри фрагмента»:

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

Когда вы делаете тост в фрагменте, сделайте следующее:

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

Когда класс расширяет фрагмент, необходимо использовать getActivity (), поскольку фрагмент является подклассом активности.

Cheerse

При вызове Toast внутри фрагмента android:

 1. Activity mActivity=this.getActivity(); 2. Toast.makeText(mActivity,"Text you want to display",Toast.LENGTH_SHORT).show(); 

Это работает для меня.

Создание тоста внутри фрагмента

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

ИЛИ

  Activity activityObj = this.getActivity(); Toast.makeText(activityObj, "Your Text Here!", Toast.LENGTH_SHORT).show(); 

ИЛИ

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

User2564789 сказал, что это правильно
Но вы также можете использовать this вместо getActivity()
Которые сделают ваш тост похожим на это

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

  public void onClick(View v) { Context context = v.getContext(); CharSequence text = "Message"; int duration = Toast.LENGTH_SHORT; Toast toast = Toast.makeText(context, text, duration); toast.show(); } 
 Activity activity = getActivity(); @Override public void onClick(View arg0) { Toast.makeText(activity,"Text!",Toast.LENGTH_SHORT).show(); }