在分离的片段中获取上下文/活动?
Posted
技术标签:
【中文标题】在分离的片段中获取上下文/活动?【英文标题】:Get context/activity in detached fragment? 【发布时间】:2015-05-02 18:07:02 【问题描述】:有一个similar question,其中大多数回答建议使用getActivity()
以获得片段的上下文,但是如果片段被分离,如何获取对活动/上下文的引用(在这种情况下,@ 987654324@返回null)?
我的情况是我的片段启动了一个 AsyncTask,它在完成时调用我片段的 onSuccess()
方法。但是我的片段的onSuccess()
方法需要上下文才能显示 Toast 消息或访问共享首选项。那么有没有可靠的获取上下文的方法呢?
我正在考虑的一种方法是将上下文对象传递给我的 AsyncTask 构造函数,然后将其传递回我前面提到的onSuccess()
回调方法——但这会导致内存泄漏吗?
(注意 - 有一个答案 here 显示了如何检索当前活动,但同样,它需要一个有效的上下文。)
【问题讨论】:
你试过 getApplicationContext() 了吗? onattach 方法首先被调用,因为你将获得活动引用,存储它并使用它。 【参考方案1】:在你的片段中使用它:
private Context context;
@Override
public void onAttach(Activity activity)
super.onAttach(activity);
context = activity;
然后在你想要的地方使用context
。
【讨论】:
谢谢,但是这种方法有可能导致内存泄漏吗?【参考方案2】:你应该在创建视图后存储上下文,当你进入片段时。
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;
在您的片段中使用该上下文,无论您想要什么。
【讨论】:
以上是关于在分离的片段中获取上下文/活动?的主要内容,如果未能解决你的问题,请参考以下文章
片段活动中的 ListView 适配器上下文错误,我该怎么办?
片段活动错误中的ListView Adapter上下文,我该怎么办?