【发布时间】:2016-03-06 11:10:11
【问题描述】:
我是安卓开发的新手。我正在尝试使用从其他网站获得的以下代码在片段中显示 Toast:
Toast.makeText(this, "count is " + count, Toast.LENGTH_SHORT).show();
但是我在第一个参数中遇到了问题。有人可以帮忙吗?
【问题讨论】:
标签: android android-fragments this android-toast
我是安卓开发的新手。我正在尝试使用从其他网站获得的以下代码在片段中显示 Toast:
Toast.makeText(this, "count is " + count, Toast.LENGTH_SHORT).show();
但是我在第一个参数中遇到了问题。有人可以帮忙吗?
【问题讨论】:
标签: android android-fragments this android-toast
您可以使用getActivity(),它返回与片段关联的活动。 Activity 是一个上下文(因为 Activity 扩展了 Context)。
所以你的代码会是这样的:
Toast.makeText(getActivity(), "count is " + count, Toast.LENGTH_SHORT).show();
【讨论】:
如果您看到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
【讨论】:
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();`
}
}
【讨论】:
使用getActivity()
Toast.makeText(getActivity(), "count is " + count, Toast.LENGTH_SHORT).show();
【讨论】: