获取分离片段中的上下文/活动?

时间:2015-03-02 11:41:41

标签: android android-fragments android-asynctask android-context

有一个similar question,其中大多数答案建议使用getActivity()来获取片段的上下文,但是如果片段是分离的,如何获取对活动/上下文的引用(在在哪种情况下,getActivity()返回null)?

我的情况是我的片段启动了一个AsyncTask,完成后会调用我片段的onSuccess()方法。但我的片段的onSuccess()方法需要一个上下文才能显示Toast消息或访问共享首选项。那么有一种获得背景的可靠方法吗?

我正在考虑的一种方法是将一个上下文对象传递给我的AsyncTask构造函数,并将其传递回我前面提到的onSuccess()回调方法 - 但是这会导致内存泄漏吗?

(注意 - 答案here显示如何检索当前活动,但同样需要有效的上下文。)

2 个答案:

答案 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;
    }

在你想要的任何地方使用片段中的上下文。

相关问题