gpt4 book ai didi

java - 第一次执行夜间模式代码时,会触发当前重启

转载 作者:行者123 更新时间:2023-12-02 00:41:54 25 4
gpt4 key购买 nike

第一次执行夜间模式代码时,会重新启动 Activity

第二次,代码将正常工作并对程序进行更改

我使用了以下代码:

public class Splash extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);

new CheckedNightMode().execute();

}
private class CheckedNightMode extends AsyncTask<Void, Void, Void> {

@Override
protected Void doInBackground(Void... voids) {
SharedPreferences sharedpreferences = getApplicationContext().getSharedPreferences("Night_Mode", Context.MODE_PRIVATE);
boolean state = sharedpreferences.getBoolean("State", false);
if (state) {
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
} else {
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
}
return null;
}

@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
checkLanguage();
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
startActivity(new Intent(Splash.this, Main.class));
finish();
}
}, 3000);
}

private void checkLanguage() {
SharedPreferences sharedpreferences = getApplicationContext().getSharedPreferences("Language", Context.MODE_PRIVATE);
String checkedLanguage = sharedpreferences.getString("Select", "en");
setLanguageState(checkedLanguage);
}

private void setLanguageState(String language) {
Resources resources = getResources();
Configuration configuration = resources.getConfiguration();
DisplayMetrics displayMetrics = resources.getDisplayMetrics();
configuration.setLocale(Locale.forLanguageTag(language));
resources.updateConfiguration(configuration, displayMetrics);
}
}
}

这是我的 Styles.xml:

    <style name="AppTheme" parent="Theme.AppCompat.DayNight.NoActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorRed</item>
</style>

使用主题Theme.MaterialComponents.DayNight.NoActionBar我尝试过,但它仍然是相同的

最佳答案

我的代码是正确的。 Google 自己的文档指出,如果您想在运行时更改主题,则当前操作将重新启动。

Note: Starting with AppCompat v1.1.0, setDefaultNightMode() automatically recreates any started activities.

关于java - 第一次执行夜间模式代码时,会触发当前重启,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57934493/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com