我在我的应用程序的设置中添加了一个颜色选择器首选项,以便用户可以选择ActionBar
(我正在使用ActionBarSherlock
)的背景颜色。理想情况下,我想在不让用户重新启动应用程序的情况下更改颜色,我假设这意味着添加代码以更改onResume
每个Activity
and中的颜色Fragment
。但是,当我第一次点击一个活动时,颜色变化会起作用,但如果我回到它,无论是使用设备上的后退按钮还是ActionBar
本身,颜色似乎都没有设置并且是透明的。
这是我用来设置背景颜色的代码。我尝试将其添加onCreate
到onResume
:
public class MyActivity extends SherlockActivity {
@Override
public void onCreate(final Bundle icicle)
{
super.onCreate(icicle);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setBackgroundDrawable(new ColorDrawable(PreferenceManager.getDefaultSharedPreferences(this).getInt("app_color", getResources().getColor(R.color.app_color))));
}
@Override
public void onResume()
{
super.onResume();
getSupportActionBar().setBackgroundDrawable(new ColorDrawable(PreferenceManager.getDefaultSharedPreferences(this).getInt("app_color", getResources().getColor(R.color.app_color))));
}
}
app_color
是颜色选择器首选项的名称,还有一个默认颜色,存储在colors
值文件中。我也有一个TextView
没有相同问题并保留颜色的页脚。