gpt4 book ai didi

Android Fragment onAttach() 已弃用

转载 作者:IT老高 更新时间:2023-10-28 12:50:04 27 4
gpt4 key购买 nike

我更新了我的应用程序以使用最新的支持库(版本 23.0.0),我发现他们弃用了 Fragment 类的 onAttach() 函数。

代替:

onAttach (Activity activity)

现在是:

onAttach (Context context)

由于我的应用程序使用在弃用之前传递的 Activity ,我认为一个可能的解决方案是:

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

这是正确的做法吗?

更新:

如果我运行 API 低于 23 的设备,甚至不会调用新的 onAttach()。我希望这不是他们打算做的!

更新 2:

问题已通过 SDK 的最新更新解决。

我已经在我的 API 22 设备上进行了测试,并且正在调用 onAttach(Context)。

点击here关注我几周前打开的错误报告以及 Google 员工的回答。

最佳答案

Activity 是一个上下文,所以如果您可以简单地检查上下文是一个 Activity 并在必要时进行转换。

@Override
public void onAttach(Context context) {
super.onAttach(context);

Activity a;

if (context instanceof Activity){
a=(Activity) context;
}

}

更新:有些人声称从未调用过新的 Context 覆盖。我已经做了一些测试,但找不到这样的场景,根据源代码,它永远不应该是真的。在我测试的所有情况下,无论是 SDK23 之前还是之后,ActivityonAttachContext 版本都被调用。如果您能找到一种情况并非如此,我建议您创建一个示例项目来说明问题和 report it to the Android team .

更新 2:我只使用 Android 支持库 fragment ,因为那里的错误得到更快地修复。似乎只有在您使用框架 fragment 时才会出现上述覆盖未正确调用的问题。

关于Android Fragment onAttach() 已弃用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32083053/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com