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