一万年来谁著史,三千里外欲封侯。这篇文章主要讲述如何覆盖Android应用程序中的配置?相关的知识,希望能为你提供帮助。
【如何覆盖Android应用程序中的配置()】解决了(底部的解决方案)
在我的活动中,我需要阅读首选项,然后覆盖配置。在构造函数中,Context还没有准备好:
尝试在空对象引用上调用虚方法'java.lang.String android.content.Context.getPackageName()'在
onCreate
,为时已晚:java.lang.IllegalStateException:已经调用了getResources()来自ContextThemeWrapper documentation的报价:
此[applyOverrideConfiguration]方法只能调用一次,并且必须在调用getResources()或getAssets()之前调用。覆盖配置的正确时间和地点是什么?
代码摘自我目前的工作解决方案。
class OverrideActivity extends AppCompatActivity {// ...private boolean __overrideConf = false;
@Override
public Resources getResources() {
if (!__overrideConf) {
// ...
// read shared preferences needs context
// ...
applyOverrideConfiguration(configuration);
__overrideConf = true;
}
return super.getResources();
}
}
解决方案(覆盖受保护的方法attachBaseContext)
@Override
protected void attachBaseContext(Context newBase) {
super.attachBaseContext(newBase);
applyOverrideConfiguration(new Configuration());
}
答案解决方案(覆盖受保护的方法attachBaseContext)
@Override
protected void attachBaseContext(Context newBase) {
super.attachBaseContext(newBase);
// copypaste safe code
applyOverrideConfiguration(new Configuration());
}
推荐阅读
- Android活动堆栈和对话框
- 删除Android中的父活动链接
- 从Singleton对象引用Android Activity View
- 在Mac上看不到外部硬盘驱动器(这是解决方案)
- 如何在Kali Linux上启用声音
- 如何在Electron Framework中更改窗口缩放级别
- 如何在Kali Linux中使用John the Ripper使用蛮力破解PDF密码
- 如何在Kali Linux中使用Nmap枚举Web服务器目录
- 如何使用Kali Linux进行中间人(MITM)攻击