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



有一个类似的问题,大多数人都回答了使用getActivity()来获取片段上下文的建议,但如果片段被分离(在这种情况下,getActivity()返回null),如何获得对活动/上下文的引用?

我的情况是,我的片段启动了一个AsyncTask,该任务在完成时调用我的片段的onSuccess()方法。但是我的片段的onSuccess()方法需要一个上下文来显示Toast消息或访问共享的首选项。那么,有没有一种可靠的方法来获取上下文呢?

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

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

在你的片段中使用这个:

private Context context;
@Override
public void onAttach(Activity activity) {
    super.onAttach(activity);
    context = activity;
}

然后在需要的地方使用context

您应该在创建视图后,在片段中输入时存储上下文。

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

在你的片段中使用该上下文,无论你想在哪里。

最新更新