为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

沧海一幻觉 2023-07-28 15:26:33
第一次执行夜间模式代码时,它会重新启动 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);        }主题Theme.MaterialComponents.DayNight.NoActionBar我试过了,但还是一样
查看完整描述

2 回答

?
交互式爱情

TA贡献1712条经验 获得超3个赞

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

注意:从 AppCompat v1.1.0 开始,setDefaultNightMode() 会自动重新创建任何已启动的活动。


查看完整回答
反对 回复 2023-07-28
?
达令说

TA贡献1821条经验 获得超6个赞

这是默认行为。由于资源已更改,android:configChanges 默认重新启动 Activity。本质上,您遇到的是预期的行为,而不是错误,您可能应该重新启动活动,否则您将不得不递归地重新实例化/重新配置每个视图,这将变得复杂且有错误。



查看完整回答
反对 回复 2023-07-28
  • 2 回答
  • 0 关注
  • 105 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信