【问题标题】:Unable to show toast in fragment using this无法使用此在片段中显示吐司
【发布时间】:2016-03-06 11:10:11
【问题描述】:

我是安卓开发的新手。我正在尝试使用从其他网站获得的以下代码在片段中显示 Toast:

Toast.makeText(this, "count is " + count, Toast.LENGTH_SHORT).show();

但是我在第一个参数中遇到了问题。有人可以帮忙吗?

【问题讨论】:

    标签: android android-fragments this android-toast


    【解决方案1】:

    您可以使用getActivity(),它返回与片段关联的活动。 Activity 是一个上下文(因为 Activity 扩展了 Context)。

    所以你的代码会是这样的:

    Toast.makeText(getActivity(), "count is " + count, Toast.LENGTH_SHORT).show();
    

    【讨论】:

      【解决方案2】:

      如果您看到Toast 类的方法makeText 的签名,您可以看到所需的第一个参数是上下文。

      片段不是 Context 的子类,因此使用 this 关键字传递片段对象。

      您必须使用getActivity()getContext() 方法。

      Toast.makeText(getActivity(), "count is " + count, Toast.LENGTH_SHORT).show();
      

      如果你想知道区别,请阅读这篇文章What is the difference between this getcontext and getactivity

      【讨论】:

        【解决方案3】:

        1) 您可以使用 getActivity() 代替 this 关键字。代码如下所示,

        Toast.makeText(getActivity(), "Count is" + count, Toast.LENGTH_SHORT).show();
        

        【讨论】:

          【解决方案4】:

          覆盖片段 onAttach(Context) 方法并为所有需要上下文的调用存储 context

          class MyFragment extends Fragment{
             private Context _context;
             @Override
             protected void onAttach(Context context){
               _context = context;
             }
          
            private void showToast(){
               Toast.makeText(_context, "count is " + count, Toast.LENGTH_SHORT).show();`
            }    
          }
          

          【讨论】:

            【解决方案5】:

            使用getActivity()

            Toast.makeText(getActivity(), "count is " + count, Toast.LENGTH_SHORT).show();
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2016-06-16
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2018-09-20
              • 1970-01-01
              • 2015-01-04
              相关资源
              最近更新 更多