无法使用此在片段中显示吐司

Unable to show toast in fragment using this

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

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

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

使用getActivity()

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

您可以使用 getActivity(),其中 returns activity 与片段相关联。 activity 是上下文(因为 Activity 扩展了上下文)。

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

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

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

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

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

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

如果你想知道区别,请阅读这篇文章post

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

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

覆盖片段 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();`
  }    
}