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

第一次执行夜间模式代码时,它会重新启动 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我试过了,但还是一样


沧海一幻觉
浏览 143回答 2
2回答

交互式爱情

我的代码是正确的。谷歌自己的文档指出,如果你想在运行时更改主题,则当前操作将重新启动。注意:从 AppCompat v1.1.0 开始,setDefaultNightMode() 会自动重新创建任何已启动的活动。

达令说

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

相关分类

Java