持有Activity实例的最安全方法

时间:2015-05-14 06:47:24

标签: android android-fragments android-activity android-context

持有instance <{p>} Activity最佳且更安全的方法是什么?

private Activity mActivity;

方法:

 @Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    mActivity = getActivity();
}

第二 方法:

@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View view = inflater.from(getActivity()).inflate(R.layout.fragment_main, container, false);

    mActivity = (Activity) view.getContext();

    return view;
}

2 个答案:

答案 0 :(得分:1)

嗯,这取决于。我建议你使用getActivity()

您可以在onAttach(Activity activity)之后使用它。如果您查看FragmentManager源代码,可以看到mActivity Fragment字段在调用onAttach之前设置。

但是你必须要小心,在调用onActivityCreated之前,活动没有完全初始化(views,..)。

答案 1 :(得分:-1)

在大多数情况下,您不需要捕获Activity。
但如果你愿意,我的建议是,

@Override
public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    mActivity = this; 
}