对 Android 文档的说明:片段
Posted
技术标签:
【中文标题】对 Android 文档的说明:片段【英文标题】:Clarification on Android documentation : Fragments 【发布时间】:2013-08-22 12:46:15 【问题描述】:该文档在 android 开发者网站的 Fragments 上有很好的定义,但我对 Fragments 中的一种特定生命周期方法表示怀疑
http://developer.android.com/guide/components/fragments.html
onAttach()
当片段与 活动(此处传入Activity)。
这个关联在内部有什么作用?
我进一步检查了这里
http://grepcode.com/file/repo1.maven.org/maven2/com.google.android/support-v4/r7/android/support/v4/app/Fragment.java?av=f
默认构造函数。每个片段都必须有一个空的构造函数,所以 它可以在恢复其活动状态时被实例化。它是 强烈建议子类不要有其他构造函数 带参数,因为这些构造函数不会被调用 片段被重新实例化;相反,参数可以由 调用者使用 setArguments(android.os.Bundle) 并稍后由 带有 getArguments() 的片段。应用程序通常不应 实现一个构造函数。第一个地方应用程序代码运行在哪里 可以使用的片段在 onAttach(android.app.Activity) 中, 片段与其活动实际关联的点。 一些应用程序可能还想实现 onInflate(android.app.Activity,android.util.AttributeSet,android.os.Bundle) 从布局资源中检索属性,但应该小心 在这里,因为发生这种情况是因为片段附加到它的
但同样的术语,但没有确切的解释。
【问题讨论】:
您可以将该行添加到您的 grepcode-sample 中,因此您不必搜索年龄 【参考方案1】:Fragment
只是一个可以附加到Activity
或从 Activity 分离的组件。换句话说,Activity 就像是 Fragment 的宿主。
为了知道 Fragment 何时附加,或从宿主 Activity 分离,它提供了 2 个回调方法:onAttach()
- 将 Fragment 添加到 Activity 时由系统调用onDetach()
- 从活动中删除片段时由系统调用
当他们说“片段已与活动关联”时,表示片段已添加到活动中,这意味着从这里您可以调用getActivity()
。
【讨论】:
【参考方案2】:这里的问题是这个关联在内部是做什么的?
我在下面的 FragmentManager 类中找到了我正在寻找的代码, 这准确地显示了以下 ASSOCIATION 是如何产生的,
片段已与活动关联
https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/core/java/android/app/FragmentManager.java
f.mActivity = mActivity;
f.mParentFragment = mParent;
f.mFragmentManager = mParent != null
? mParent.mChildFragmentManager : mActivity.mFragments;
f.mCalled = false;
f.onAttach(mActivity);
上面的代码做了Fragment关联的Activty的赋值,然后调用onAttach(..)
【讨论】:
以上是关于对 Android 文档的说明:片段的主要内容,如果未能解决你的问题,请参考以下文章