我需要根据用户喜好设置应用主题。这个过程发生在单独的 Activity 中,它不是我的主要 Activity 。我使用这段代码来更改应用程序主题:
getApplicationContext().setTheme(R.style.theme);
我知道如果我以前用过它是完美的
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_settings);
onCreate() 方法中的方法。但我必须用单独的方法来做。我尝试在该代码之后重新启动应用程序,但它没有重新启动应用程序。
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
finish();
startActivity(intent);
我也不知道在重新启动应用程序后它会工作。 如果有任何建议可以解决以编程方式更改应用程序主题的问题,我们将不胜感激。
最佳答案
尝试以下操作,它会在一秒钟后重新启动应用程序:
private void restartSelf() {
AlarmManager am = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, Calendar.getInstance().getTimeInMillis() + 1000, // one second
PendingIntent.getActivity(this, 0, getIntent(), PendingIntent.FLAG_ONE_SHOT
| PendingIntent.FLAG_CANCEL_CURRENT));
finish();
}
restartSelf()
应该是您的主要 Activity 的成员。或者,您可以将 this
替换为应用程序的上下文,将 getIntent()
替换为主要 Activity 的 Intent
。
关于android - 以编程方式更改应用程序主题(不在主要 Activity 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21923197/