您必须将值保存在某处,例如在数据库或共享首选项中。
在应用setTheme(THEME);
之前您必须检索该值。
这是初始值:
public static int THEME = R.style.Theme_Sherlock;
首先设置(例如,“暗”)的值,并重新启动应用程序:
DBAdapter db = new DBAdapter(this);
try {
db.open();
db.UpdateOption("theme", "dark");
}
catch (Exception ex) {}
finally {
db.close();
}
finish();
Intent intent = new Intent(this, ActionBarTabsPager.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
然后你得到新的价值和主题设置
DBAdapter db = new DBAdapter(this);
Cursor c = null;
try {
db.open();
c = db.GetOption(c, "theme");
String theme = c.getString(1);
if (theme.equalsIgnoreCase("dark")) {
THEME = R.style.Theme_Sherlock;
}
else if (theme.equalsIgnoreCase("light")) {
THEME = R.style.Theme_Sherlock_Light;
}
else if (theme.equalsIgnoreCase("darklight")) {
THEME = R.style.Theme_Sherlock_Light_DarkActionBar;
}
}
catch (Exception ex) {}
finally {
try {
if (c != null)
{
c.close();
c = null;
}
}
catch (Exception ex){}
db.close();
}
setTheme(THEME);
我有一个tabel选项来保存一些设置。这当然也可以通过共享偏好来完成。
应用主题作品。这只是我的碎片重新启动后立即关闭的问题。例如,我无法再访问列表视图。 – Leandros 2012-03-13 21:15:30
我不能重新查询listlayout。这让我发疯。 :D – Leandros 2012-03-13 22:23:38
然后我不确定你的意思。你能改说这个问题吗?请记住:如果您重新启动,您应该完成根活动。然后,就像关闭应用程序并稍后再启动它一样。如果有可能发布一些代码,错误在你的意见。 – Dante 2012-03-14 13:52:39