澄清Android文档:碎片

时间:2013-08-20 12:49:28

标签: android android-fragments

文档在Android开发者网站的片段中定义良好,但我对片段中的一个特定生命周期方法有疑问

  

http://developer.android.com/guide/components/fragments.html

     

onAttach()片段与之关联时调用   活动(活动在这里传递)。

此协会内部有什么作用?

此外,我在这里查看了

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)   从布局资源中检索属性,但应该注意   这里是因为片段附加到它上面       }

但同样的术语,但没有确切的解释。

2 个答案:

答案 0 :(得分:2)

Fragment只是一个可以附加到Activity或与活动分离的组件。换句话说,Activity就像Fragment的主机。

为了知道片段何时附加或与主机活动分离,它提供了2种回调方法:
onAttach() - 在将活动片段添加到活动时由系统调用 onDetach() - 从活动中删除片段时由系统调用

当他们说“片段已与活动相关联”时,表示片段已添加到活动中,这意味着从此处开始调用getActivity()

答案 1 :(得分:1)

这里的问题是这个协会在内部做了什么?

我在FrgmentManager类中找到了以下代码,我正在寻找什么, 这显示了如何制作 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(..)