当前位置: 首页 > 知识库问答 >
问题:

Android片段onAttach()已弃用

萧霍英
2023-03-14

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

而不是:

onAttach (Activity activity)

现在是:

onAttach (Context context)

由于我的app使用的是弃用前通过的活动,我认为一个可能的解决方案是:

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

点击这里查看我几周前打开的bug报告,以及谷歌的人给出的答案。

共有1个答案

景同
2023-03-14

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

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

    Activity a;

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

}

更新:有些人声称从未调用新的context重写。我做了一些测试,找不到一个场景,其中这是真的,根据源代码,它永远不应该是真的。在我测试的所有情况下,无论是在SDK23之前还是之后,都调用了onattachactivitycontext版本。如果你能找到一个不是这样的场景,我会建议你创建一个示例项目来说明这个问题,并将它报告给Android团队。

更新2:我只使用过Android支持库片段,因为那里的bug修复得更快。上面提到的重写没有被正确调用的问题似乎只有在使用框架片段时才会出现。

 类似资料:
  • 我是Android开发新手,对OnAttach(上下文)方法有疑问。据我所知,您在扩展Fragment的类中重写了OnAttach方法,它基本上是将片段附加到作为参数传递的活动(上下文)。然而,在我在互联网上看到的许多示例代码中,人们用主要活动需要实现的方法创建了一个接口,并且在OnAttach方法中,他们键入上下文作为ex的接口) 我不明白的是这段代码: 将上下文类型化为为什么我们要将我们的主活

  • 尝试在和中捕获它,如 并且我在中有。

  • 我正在尝试实现一个好的、可重用的片段,我很难选择设置交互回调的模式。我当然熟悉这些文档,但我对其中描述的方法有一些疑问。 假设我们有一个带有回调接口的片段: 到目前为止,我遇到了两种为片段设置回调的方法。 Android开发指南中描述的方式。 编写的代码不多 mCallbacks永远不会为null(只要片段还活着) 如果我们在活动中使用多个片段,将会变得混乱 简单的侦听器模式。 可以在任何位置设置

  • 我知道有此文档 http://developer.android.com/reference/android/app/DialogFragment.html#AlertDialog 但是作为一个新的Android/Java学习者,要理解编写一个简单的警报对话框所涉及的代码量并不容易,该对话框会弹出2个选项(是/否)消息。 以下是我当前在MainActivity文件中的代码: 这是我尝试遵循andr

  • 我有一个警告:FragmentPagerAdapter已弃用。这是我的代码: 我在这里找到了一个可能的解决方案:片段页面适配器已弃用 但它在Kotlin中。 警告的字眼是:超级

  • 不推荐使用。从这里读取文档时,它告诉您使用和。 的正确方法是什么? 是否需要在中使用并在中使用重新设置??