Android O Settings
数据加载篇之二级菜单
搜索栏篇
Settings 渲染fragment(菜单之间的跳转)
在Activity中填充fragment的方法主要为SettingActivity中的SwitchToFragment()
给mFragmentClass赋值为AndroidManifest.xml中的<meta-data>标签中key为 META_DATA_KEY_FRAGMENT_CLASS的的值
getMetaData() 方法
代码如下:
这个函数的主要作用就是从Activity标签中获取meta-data标签中key为com.android.settings.FRAGMENT_CLASS的值,并将其赋值给mFragmentClass这个私有变量。
构建一个intent并为其增加一个特殊的键值对
key:settings:show_fragment(EXTRA_SHOW_FRAGMENT),
value:mfragmentClass指定的类名
所以要先执行getMetaData,是因为mFragmentClass赋值是在getMeatData中进行的。
判断布局
判断当前类是否为Settings.class或者是其他子菜单,即进入方式为点击launcher上的图标进入的主设置界面
接下来看launchSettingFragment()方法:
initialArguments通过赋值保存了meta-data中指定的value值。
在 SwicthToFragment实现渲染
加载DashboardSummary(Fragment)显示一级菜单页面;
其他的则加载子菜单页面;
switchToFragment()方法:
先判断fragment是否合法,然后将方法中传入的Fragment进行实例化,通过replace(fragment)进行渲染。
通过上面的分析,我们应该了解的事情是,AndroidManifest中每个Activity其meta-data中的数据都是很有用的,特别是com.android.settings.FRAGMENT_CLASS对应的键值对,指定了其所在Activity的真正布局实现。其实,也是完成了从其他包的Activity向Settings中fragment的跳转实现。