问题:

进入设置应用和通知>默认应用>助手和手机输入助手应用

进入助手应用,选择none,退到上一个界面,原来显示"使用屏幕上的文字内容"消失.然后切换横竖屏,在进入手机助手显示Google助理,退回上一个界面."使用屏幕上的文字内容"这个设置项没有出现,只有在横竖屏切换一次才会出现.

问题点:选择Google助理退回上一个界面,"使用屏幕上的文字内容"这个设置项就应该立刻显示出来.

先看修改:

     private void updatePreference() {if (mPreference == null || !(mPreference instanceof TwoStatePreference)) {return;}if (isAvailable()) {if (mScreen.findPreference(getPreferenceKey()) == null) {// add it if it's not on screemScreen.addPreference(mPreference);+                setVisible(mScreen, getPreferenceKey(), true /* visible */);+                if (this instanceof Preference.OnPreferenceChangeListener) {+                    mPreference.setOnPreferenceChangeListener(+                        (Preference.OnPreferenceChangeListener) this);+                }}} else {mScreen.removePreference(mPreference);}((TwoStatePreference) mPreference).setChecked(isChecked(mContext));}

再分析原因:

分析:

  • 在android Setting 横竖屏切换的时候会重新更新AbstractPreferenceController的
    displayPreference的方法,
  • AbstractPreferenceController在开始更新数据会调用
    updateState->displayPreference,
  • 面更新只有调用updateState,

如果在displayPreference像下面一样调用了 super.displayPreference(screen);且此时isAvailable返回false;会导致后面add这个preferecen在界面上不会显示.

    @Overridepublic void displayPreference(PreferenceScreen screen) {mScreen = screen;mPreference = screen.findPreference(getPreferenceKey());super.displayPreference(screen);//0}

因为android 9的AbstractPreferenceController的类displayPreference是这样写的(对应上面的0).

    public void displayPreference(PreferenceScreen screen) {final String prefKey = getPreferenceKey();if (isAvailable()) {setVisible(screen, prefKey, true /* visible */);//1if (this instanceof Preference.OnPreferenceChangeListener) {final Preference preference = screen.findPreference(prefKey);preference.setOnPreferenceChangeListener((Preference.OnPreferenceChangeListener) this);}} else {setVisible(screen, prefKey, false /* visible */);//2}}

设置1和2 设置了不可见和不可见.后面更新addPreference后,如果没有设置会可见状态,设置中是不会显示这个设置项的

    private void updatePreference() {if (mPreference == null || !(mPreference instanceof TwoStatePreference)) {return;}if (isAvailable()) {if (mScreen.findPreference(getPreferenceKey()) == null) {// add it if it's not on screemScreen.addPreference(mPreference);//3}} else {mScreen.removePreference(mPreference);}((TwoStatePreference) mPreference).setChecked(isChecked(mContext));}

3处addPreference后,对应的设置项并没有出现,因为之前在1处设置,但是更新的时候不重新调用displayPreference,

疑问:为什么不显示preference设置项隐藏需要有removePreference和setVisible两种操作.
如果要避免这个问题,就要在addPreference重新设置setVisible为true

AbstractPreferenceController这是android 9的frameworks下,对比android 8,这个的操作不能理解,考虑到这里是系统部分的东西,所以我只在Setting做了处理.

9.0 原生setting 默认应用手机助手显示异常相关推荐

  1. 360手机助手显示手机型号错误

    今天客户反馈,在使用360手机助手的时候,显示的手机型号有时候错误,比如你用的华为的手机,而显示的是THC的手机型号,需要我们修改,我先分析了一下,根本不可能啊,因为我认为显示的型号应该是读系统的属性 ...

  2. 王者荣耀手机助手服务器异常,如何解决王者荣耀助手登录网络异常

    很多玩家在登陆王者荣耀助手登陆时会出现网络异常,无法登陆的情况,但是排除了网络的原因后还是无法登陆,那么王者荣耀助手登录网络异常到底该怎么解决呢?下面就和斗蟹小编一起来看看吧! 王者荣耀助手网络异常解 ...

  3. 王者荣耀手机助手服务器异常,王者荣耀助手登录网络异常怎么办

    很多玩家在登陆王者荣耀助手登陆时会出现网络异常,无法登陆的情况,但是排除了网络的原因后还是无法登陆,那么王者荣耀助手登录网络异常到底是什么原因,该怎么解决呢? 最佳答案 王者荣耀助手登录提示网络异常原 ...

  4. vue2.0/原生js使用谷歌地图并显示标记点(附两点间路径方法)

    图1,谷歌地图初始化并实现显示点信息 图2 ,谷歌地图实现两点间路径 图3,高德地图实现搜索显示点,可点击地图取点并获取地址,也可以搜索出来 具体文章 前提 使用地图,都是需要获取开发者的key的,去 ...

  5. 【好玩的异常】某些手机上颜色异常,泛蓝色问题

    打包后,在手机上跑,有些手机出现 模型上有蓝色颜色.开始逐步测试排查,最终结果发现 材质求上定义的颜色_Color的R通道在某些手机上显示是0,实际是1. 手机上显示: 正常显示: 找到元凶: sha ...

  6. 华为 原生android 6.0,安卓6.0原生桌面轻体验,我的手机从未如此流畅过

    本帖最后由 啷个里格弄 于 2016-12-30 13:05 编辑 1.png (188.33 KB, 下载次数: 65) 2016-4-29 18:21 上传 ▏写在开头 P8的EMUI系统或者称之 ...

  7. 360手机助手 无法android 4.2手机软件移动sd卡,360手机助手设置软件默认安装到SD卡中的教程...

    360手机助手是一款强大而具有人性化的手机辅助软件,我们可通过其来实现下载软件.更新软件等各种功能.我们要设置将软件下载的时候,要将软件默认安装到手机的SD卡中,而不是安装到手机内存中,如果安装到内存 ...

  8. 华为手机升级回退_HarmonyOS版可通过华为手机助手回退到EMUI 11.0官方稳定版

    原标题:华为官方教程:以 P40 为例,鸿蒙 OS 2.0 Beta 版本回退到 EMUI 11 稳定版 12月16日消息 华为在今天举行 HarmonyOS 2.0 手机开发者 Beta 活动.现场 ...

  9. 豌豆荚手机助手电脑版 v2.75.0.6133 官方pc版

    豌豆荚手机助手电脑版 v2.75.0.6133 官方pc版 软件大小:33.8MB 软件语言:简体中文 软件性质:常用软件 软件授权:官方版 更新时间:2014-05-13 应用平台:Win8/Win ...

最新文章

  1. ubuntu sever 命令行 使用 u盘
  2. Cesium BingMapsImageryProvider类学习
  3. 差分能量分析介绍(五)
  4. CVPR 2020 《12-in-1: Multi-Task Vision and Language Representation Learning》论文笔记
  5. 计算机系数据结构03年试题答案,03年北京文考“数据结构”试题
  6. 后缀自动机SAM详解
  7. Android实习结束后的阶段性总结
  8. AI 假冒老板骗取 173 万!
  9. ROS 教程之navigation: 用程序设定导航目标点
  10. ubuntu linux 从入门到精通.pdf,UBUNTU LINUX从入门到精通(附DVD)
  11. (C语言课程设计)学生选修课程系统设计
  12. Xcode7 launchscreen.storyboard真机启动黑屏,且不能适配,模拟器没问题
  13. 解决pymysql.err.InternalError: (1054, Unknown column '某某某' in 'field list') 的问题
  14. Element系列之阻止el-switch冒泡事件
  15. centos系统使用pptpd搭建在windows客户端的vpn服务器
  16. QQ留言代码,网页QQ留言
  17. Dive into Vue.js
  18. 【数据结构Python描述】优先级队列描述“银行VIP客户插队办理业务”及“被插队客户愤而离去”的模型实现
  19. matlab中利用save保存.mat文件
  20. 基于SIP的嵌入式无线可视电话终端设计与实现

热门文章

  1. android画图板怎么设置透明颜色,MediBang Paint
  2. 【FXCG】如何培养耐性
  3. C盘扩容卷灰色无法点击
  4. fiddler 只监听模拟器_使用fiddler抓包模拟器及配置fiddler过滤
  5. 分享10个接私活的网站
  6. RosStudio安装教程
  7. 基于postCss的TaiWindCss源码解析
  8. [CNN] 卷积、反卷积、池化、反池化
  9. errmsg:invalid message type hint 群发图文消息
  10. 根据时间段,求出时间段范围内的每月最后一周 周二