- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我更新了我的应用程序以使用最新的支持库(版本 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 之前还是之后,Activity
和 onAttach
的 Context
版本都被调用。如果您能找到一种情况并非如此,我建议您创建一个示例项目来说明问题和 report it to the Android team .
更新 2:我只使用 Android 支持库 fragment ,因为那里的错误得到更快地修复。似乎只有在您使用框架 fragment 时才会出现上述覆盖未正确调用的问题。
关于Android Fragment onAttach() 已弃用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32083053/
我的 on 有问题 附上它在他身上做红线并写信给我: “覆盖‘android.support.v4.app.Fragment’中已弃用的方法” 请帮助我理解我做错了什么?为所有的 helper 打交道
我正在尝试使用 API 23 为 Android 应用程序创建一个 DialogFragment。我发现 onAttach 方法已针对此 API 更新,现在需要一个 上下文 作为参数。问题是,我无法让
我正在编写测试,其中 onAttach 生命周期方法中有一些逻辑,但在测试时永远不会调用 onAttach。 这就是我最初尝试测试它的方式 beforeEach(() => { vi
Marionette 版本3.2.0 onAttach 生命周期事件未触发 根据doc The events marked with "*" only fire if/when the region'
在创建 fragment 时,我遇到 getActivity() 为空。因此,为了缩小问题的范围,我在 onAttach(Activity activity) 中保留了一个 Activity 的本地副
我创建的 fragment 取决于其父 Activity 的一些属性。我浏览了 Fragment Life cycle文件。我需要将 Activity 的副本存储在一个变量中,以便以后可以访问它。有两
我的 Fragment 从 AppCompatActivity 启动时没有调用 onAttach(context) 方法。 在 XML 中创建 fragment : 但如果我从 support.v4
我更新了我的应用程序以使用最新的支持库(版本 23.0.0),我发现他们弃用了 Fragment 类的 onAttach() 函数。 代替: onAttach (Activity activity)
所以我有这个角 Dart 组件: @Component(...) class TableCard implements AttachAware, ShadowRootAware { void on
我试图在 fragment 中获取 Activity ,因为我在 getActivity.finish() 上不断收到 空指针异常。 我正在尝试通过以下方式实现这一目标: @Override publ
我创建了一个接口(interface) DataPasserInterface 将数据从 fragment 传递到其托管 Activity 。我在 onAttach 中初始化了界面,如下代码所示,问题
我正在尝试使用类型化回调实现抽象 fragment ,以便在多个子类中使用它。 如何检查 Context 是否是适当类的实例? 我的abstact CallbackFragment代码: public
有什么方法可以保证 onAttach 正常工作吗? @Override public void onAttach(Activity activity) { super.onAttach(act
我有一个自定义类,其父类是 SurfaceView。我让类(class)正常工作,从它自己的线程等绘制到屏幕上。但是我想了解应该如何正确处理问题标题中的方法。 例如,如果我的应用程序正在运行(在手机上
在 onAttach 函数中,eclipse 显示错误说明 The method onAttach(Activity) in the type Fragment is not applicable f
我尝试从 DialogFragment 实现回调。有一个很好的例子,但他们不会从 Fragment 打开此 DialogFragment。 http://developer.android.com/g
将 SDK 更新到 API 级别 23 后,我发现 onAttach (Activity activity) 已弃用,新方法是 onAttach (Context context)。谁能告诉我为什么要
在 Fragment 的生命周期中,onAttach() 方法在 onCreate() 方法之前被调用。我无法解决这个问题。为什么要先附加 Fragment? 最佳答案 TL;DR: 为了不破坏 an
我知道这是 nob 问题,但我无法理解变量 someEventListener 赋值什么?..我们如何将 Activity 与接口(interface) onSomeEventListener) 进行
所以我有一个奇怪的问题,我现在无法解决。 房间游戏 fragment @Override public void onAttach(Activity activity) { super.onA
我是一名优秀的程序员,十分优秀!