android - fragment 中的 getContext()

标签 android android-fragments android-context

我在哪里可以访问 Fragment 中的 getContext()?我的意思是,它不是 null 并且可以使用(例如,用于控件创建)。是 onAttachonCreateView 还是 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/

相关文章:

整个应用程序的 Android 上下文

java - MaterialDrawer 设置选定的配置文件

android - 使用 Jenkins 构建 android gradle 项目失败

java - 带有远程服务的 Android 应用程序

带有 AsyncLayoutInflater 的 Android Fragment onCreateView

android - Android Context 的有效期是多久?

android - Android:Imagebutton,onclick播放声音

java - 将数据从 Activity 传递到 Fragment Class Cast Exception

java - fragment 内容未出现在手机上

java - 无法使用 getApplication 方法转换为 Application