我在哪里可以访问 Fragment
中的 getContext()
?我的意思是,它不是 null 并且可以使用(例如,用于控件创建)。是 onAttach
、onCreateView
还是 onActivityCreated
?
最佳答案
所有提到的答案基本上都是正确的。您应该在 onAttach 和 onDetach 之间获取 Activity 的上下文,所以我喜欢将其添加到我的 fragment 中:
private Context mContext;
@Override
public void onAttach(Context context) {
super.onAttach(context);
mContext = context;
}
@Override
public void onDetach() {
super.onDetach();
mContext = null;
}
然后每当我使用 mContext 时,我都会添加一个检查:
if(mContext != null) {
//your code that uses Context
}
更新:
在支持库 27.1.0 及更高版本中,Google 引入了新方法 requireContext() 和 requireActivity(),它们将返回非空上下文或 Activty。
如果在调用该方法时 fragment 当前未附加,它将抛出 IllegalStateException:因此请在 try catch block 中使用。
关于android - fragment 中的 getContext(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48688419/