【发布时间】:2015-11-12 00:26:18
【问题描述】:
我更新了我的应用程序以使用最新的支持库(版本 23.0.0),我发现他们弃用了 Fragment 类的 onAttach() 函数。
代替:
onAttach (Activity activity)
现在是:
onAttach (Context context)
由于我的应用程序使用在弃用之前传递的活动,我认为一个可能的解决方案是:
@Override
public void onAttach(Context context) {
super.onAttach(context);
activity = getActivity();
}
这是正确的做法吗?
更新:
如果我运行 API 低于 23 的设备,甚至不会调用新的 onAttach()。我希望这不是他们打算做的!
更新 2:
问题已通过 SDK 的最新更新解决。
我已经在我的 API 22 设备上进行了测试,并且正在调用 onAttach(Context)。
点击here 关注我几周前打开的错误报告以及 Google 员工的回答。
【问题讨论】:
-
如果您在传递的实例中使用特定的 Activity 方法,那么您是否尝试将上下文转换为您的 Activity?记住 Activity 是 Context 的子类。也许铸造会起作用。
-
由于某种原因,onAttach() 甚至没有被调用!有任何想法吗?您是否尝试更新到最新的支持库。
-
为什么 API 已移至
Context?无论如何,您不需要Activity来附加和显示片段吗?否则您将如何使用Context参数? -
我已经把它作为一个bug发布了,见链接code.google.com/p/android/issues/detail?id=183358
-
要调用新的
onAttach(Context context),您需要使用至少具有 API 23 的设备或使用 android.support.v4.app.Fragment。见here