Amadeus复刻计划(App篇 三)
值得记录的问题及解决:
原项目使用FragmentActivity储存用户配置(如语言、是否显示通知等),该库已被废弃,使用时会出现一些问题。所以改为AppCompatActivity,并重构SettingsFragment类使其可以渲染preference.xml文件(因为原项目使用的xml样式,懒得重构了)
prefence.xml文件中可以设置“点击该元素跳转至指定activity”,设置方法为在<Preference>标签中新建<intent>标签,并设置“android:action=xxx”,其中xxx为activity包名,需要在Manifest中注册(强调此点,笔者在此处耽误了不少时间)
PendingIntent是原作者执行启动activity使所使用的类,该类创建时需要指定Flag参数,值得注意的是,该参数会因安卓API的不同而有所不同,目前已知的是当API≥31时,需要指定Flag = PendingIntent.FLAG_IMMUTABLE,反之为PendingIntent.FLAG_ONE_SHOT,具体原因笔者尚未深入了解,如有大佬路过,请不吝赐教。(此处也花费了不少时间,主要原因是该处报错较为隐蔽,应用会直接闪退,并且控制台没有相关日志,需要手动调试并观察debug页面才能发现相关错误信息)
关于2的补充:有趣的是二中跳转activity可以指定为调用其他软件(前提是知道该名称),不知道有什么用处,暂且略去不谈。
吐槽:
Android Studio实在复杂,乱七八糟的问题折腾的好累,不过开发文档也比较完善(与其他开发软件相比),算是功过相抵了(?)