android - Fragment.mActivity 字段什么时候写入?

标签 android android-fragments

Fragment的源码中,有一个字段叫做mActivity:

package android.app;
public class Fragment implements ComponentCallbacks2, OnCreateContextMenuListener {

    // Activity this fragment is attached to.
    Activity mActivity;

为了找到这个字段写在哪里,我试过如下:

  1. 查看了Fragment的源码,发现Fragment.initState()方法中只有一种写法:

    mActivity = null;
    

    但是Fragment使用mActivity的频率很高,肯定有写字段的地方。

  2. mActivity 的访问是默认,所以可能有其他类会写这个字段。然后我检查了Fragment类的用法,但没有发现与该字段的写入行为有关。

  3. 不知道接下来要做什么,可能是Android中的一些特殊进程?

谁能告诉我上面的方法是否正确找到此类问题的答案? 请给我一些关于查找类/字段/方法用法的建议。

最佳答案

不是 Fragment,而是 FragmentManager 实际上管理 mActivity 字段。因为它不是私有(private)的,所以任何包本地类都可以访问它。

检查 FragmentManager.moveToState()方法,line 900用于支持 FragmentManager
检查FragmentManager.moveToState()方法,line 848对于 android.app.FragmentManager

关于android - Fragment.mActivity 字段什么时候写入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40756713/

相关文章:

android - 如何在 react 原生应用程序中升级 gradle

java - Viewpager 中的 fragment 仅在从旁边的 fragment 打开时刷新

android - 如何在工具栏中为不同的 fragment 设置不同的菜单?

Android:PreferenceFragment 与自定义 Preference 生命周期不一致?

android - 返回上一个 fragment 的正确方法是什么?

java - 将字符串公钥转换为 RSA 公钥

android - 当当前页面不是第一页时,ViewPager 在旋转屏幕后有错误的偏移数据

android - 如何更改SquareCamera库的目录?

安卓NDK |如何调试应用程序启动或暂停应用程序直到调试器连接

android - 在 fragment 中获取 Intent