Android Cookie

Android 安卓是最开放的手机操作系统,谷歌安卓APP开发和安卓市场的相关话题

Android – onAttach(Context)不需要API 23

我已经将SDK更新到最新版本(API 23),并且onAttach(Activity)方法。 所以,而不是使用该方法,现在我使用onAttach(Context)但是这个不在生命周期中调用。 该活动是来自v7的AppCompatActivity一个实例,片段是类Fragment( android.app.Fragment )的一个实例。 任何想法如何让onAttach在API 23中工作? 解 我find了一些可以帮助你理解和解决这个问题的答案: 正如我之前提到的,我正在使用来自支持v7(AppCompatActivity)的活动和来自android.app的片段。 为了显示片段,我使用方法getFragmentManager在活动上获得片段pipe理器,所以片段pipe理器是来自android.app – >的FragmentManager的一个实例,这里是问题 如果你在API 23的设备上运行应用程序(我已经在AS模拟器上运行了它),你会发现onAttach(Context)方法会被调用。 在由FragmentManager显示片段的过程中,在特定时刻调用onAttach(..)方法。 使用getFragmentManager(),您将获得在该设备上运行的Android版本(例如API 22,23)的片段pipe理器实例。 如果应用程序在API <23的设备上运行,onAttach(Context)方法不可用,则片段pipe理器不知道在API 23中有一个onAttach(Context)方法,所以这就是为什么它不被调用对于API <23>,这种问题的解决scheme是使用来自支持库的FragmentManager。 解决scheme: 使用getSupportFragmentManager()将强制您使用支持库中的片段。 所以第一个解决scheme是使用getSupportFragmentManager()从支持库中replace所有片段。 我已经实现的解决scheme是处理两种可能性 (1.应用程序在API <23的设备上运行,应用程序在API> = 23的设备上运行)。 简而言之,在我的实现中,我有一个来自项目的所有片段的基类,我在那里添加了这个代码: /* * onAttach(Context) is not called on pre API 23 versions of Android and onAttach(Activity) is deprecated * Use onAttachToContext instead */ @TargetApi(23) […]