有一个similar question,其中大多数答案建议使用getActivity()
来获取片段的上下文,但是如果片段是分离的,如何获取对活动/上下文的引用(在在哪种情况下,getActivity()
返回null)?
我的情况是我的片段启动了一个AsyncTask,完成后会调用我片段的onSuccess()
方法。但我的片段的onSuccess()
方法需要一个上下文才能显示Toast消息或访问共享首选项。那么有一种获得背景的可靠方法吗?
我正在考虑的一种方法是将一个上下文对象传递给我的AsyncTask构造函数,并将其传递回我前面提到的onSuccess()
回调方法 - 但是这会导致内存泄漏吗?
(注意 - 答案here显示如何检索当前活动,但同样需要有效的上下文。)
答案 0 :(得分:3)
在你的片段中使用它:
private Context context;
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
context = activity;
}
然后在您想要的地方使用context
。
答案 1 :(得分:0)
当你输入片段时,你应该在创建视图后存储上下文。
Context context;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_photos, container, false);
MainView = rootView;
context = getActivity().getApplicationContext();
return rootView;
}
在你想要的任何地方使用片段中的上下文。