我目前正在试验动态功能模块,遇到了一个奇怪的问题。我通过在Activity中实现onConfigurationChanged
方法并通过添加android:configChanges="orientation|screenSize|screenLayout|keyboardHidden|uiMode"
在清单中定义它来处理配置更改。这对于“正常” apk来说效果很好,但是-在动态功能模块中执行此操作时,在旋转设备后得到Resources$NotFoundException
-对于在旋转之前已经正确解析的资源。因此,从我的角度来看,我缺少正确处理旋转的内容-我已经尝试过在SplitCompat.install(<Context>)
中重新应用onConfigurationChanged
了,但这还是行不通的。有人知道我在做什么错吗?
对于我来说,这是通过com.google.android.play:core:1.6.4库实现的。
2019-11-06 10:33:33.101 5933-5933/? W/ResourceType: No known package when getting value for resource number 0x7e0d00a8
2019-11-06 10:33:33.102 5933-5933/? D/AndroidRuntime: Shutting down VM
2019-11-06 10:33:33.103 5933-5933/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.jumio.dynamicfeature, PID: 5933
android.content.res.Resources$NotFoundException: String resource ID #0x7e0d00a8
at android.content.res.Resources.getText(Resources.java:339)
at android.widget.TextView.setText(TextView.java:5496)
最佳答案
终于找到了导致问题的原因-似乎需要在SplitCompat.install(<Context>)
中调用onConfigurationChanged
-但是在调用super.onConfigurationChanged()
之前!之所以必须这样做,是因为super.onConfigurationChanged
在片段中触发了onConfigurationChanged
方法,在这些片段中我更新了ui的某些部分。
@Override
public void onConfigurationChanged(Configuration configuration) {
SplitCompat.install(this);
super.onConfigurationChanged(configuration);
...
}
之后,我还遇到了一个问题,即旋转后无法解析主题属性-事实是,如果使用片段,则还需要修改活动中的
getTheme
方法-themeId是与setTheme相同的id在onCreate方法中。@Override
public Resources.Theme getTheme() {
Resources.Theme theme = super.getTheme();
if (themeId != 0) {
theme.applyStyle(themeId, true);
}
return theme;
}
关于android - 动态功能模块中的配置更改后的Resources $ NotFoundException,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58727299/