在片段中使用吐司

mam*_*ius 56 android toast android-fragments android-activity

当用户点击片段内的按钮时,我正在尝试显示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;
        }
Run Code Online (Sandbox Code Playgroud)

这是我一直在尝试的.

Toast.makeText( getActivity()  , ...
Toast.makeText( getView().getContext()  , ...
Toast.makeText( getActivity().getApplicationContext()  , ...
Toast.makeText( sv.getContext()  , ...
Toast.makeText( sv.getRootView().getContext()  , ...
Run Code Online (Sandbox Code Playgroud)

在Debug中,我可以看到所有这些代码都没有任何异常但没有TOAST显示.

Com*_*are 112

你没有打电话show()Toast你正在创造的makeText().

  • 这个小**'SHOW`**需要3个多小时的时间.谢谢,现在一切看起来都很美. (32认同)
  • 这是我的标准错误 - 好消息是Lint在SDK20中检测到此错误. (6认同)

小智 49

如alfo888_ibg所述:

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

做就是了:

    Toast.makeText(getActivity(),"Text!",Toast.LENGTH_SHORT).show();
Run Code Online (Sandbox Code Playgroud)

这对我有用.


alf*_*ibg 20

为了帮助另一个遇到同样问题的人,Fragment中使用Toast的完整答案是:

Activity activity = getActivity();

@Override
public void onClick(View arg0) {

    Toast.makeText(activity,"Text!",Toast.LENGTH_SHORT).show();
}
Run Code Online (Sandbox Code Playgroud)


Sin*_*Þór 12

在片段中进行吐司时,请执行以下操作:

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

当类扩展片段时,必须使用getActivity(),因为fragment是activity 的子类.

Cheerse

  • Fragment是Object的子类,请查看http://developer.android.com/reference/android/app/Fragment.html,如果它是活动的子类,则可以使用'this'代替 (3认同)

小智 8

您可以使用getActivity()获取当前活动

Toast.makeText(getActivity(),"Toast your message" ,Toast.LENGTH_SHORT).show();
Run Code Online (Sandbox Code Playgroud)


Ram*_*esh 5

在片段中制作吐司

 Toast.makeText(getActivity(), "Your Text Here!", Toast.LENGTH_SHORT).show();
Run Code Online (Sandbox Code Playgroud)

要么

    Activity activityObj = this.getActivity();

    Toast.makeText(activityObj, "Your Text Here!", Toast.LENGTH_SHORT).show();
Run Code Online (Sandbox Code Playgroud)

要么

Toast.makeText(this, "Your Text Here!", Toast.LENGTH_SHORT).show();
Run Code Online (Sandbox Code Playgroud)