相关疑难解决方法(0)

AppCompatDelegate.setDefaultNightMode()是第一次由主要活动拾取的?

Android P使用androidx 1.0.0minSdkVersion 17)运行。从我MainActivity打开我的PreferenceActivity。在那里,我更改了UI主题,还重新创建了活动以获取更改:

AppCompatDelegate.setDefaultNightMode(nightMode);
recreate();
Run Code Online (Sandbox Code Playgroud)

更新主题后,我返回MainActivity。在那里,主题已成功更新。然后,我重新打开PreferenceActivity再次更改主题。

到目前为止,一切都很好!

最后,我MainActivity再次回到。会议的主题是更新,如果你重复这些步骤也不会更新!

因此,重现步骤似乎是:

  1. 在活动A中打开活动B。
  2. 在B中,依次调用AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_YES)recreate()。主题已更新!
  3. 返回A。主题已更新!
  4. 再次打开活动B。
  5. 在B中,依次调用AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_NO)recreate()。主题已更新!
  6. 返回到A。主题没有更新,并且如果重复步骤3-6 ,将不会更新!

我打过电话recreate()从returing时PreferenceActivity而是产生另一个问题,当库在主题的变化作出反应:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (...) {
        recreate();
    } else {
        super.onActivityResult(requestCode, resultCode, data);
    } …
Run Code Online (Sandbox Code Playgroud)

android androidx

6
推荐指数
2
解决办法
1075
查看次数

标签 统计

android ×1

androidx ×1