String abColor = sharedPreferences.getString("action_bar_color", "#ffffff");
String sbColor = sharedPreferences.getString("status_bar_color", "#ffffff");
ActionBar ab = getSupportActionBar();
ab.setBackgroundDrawable(new ColorDrawable(Color.parseColor(abColor)));
Window window = getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(Color.parseColor(sbColor));
我一直在获取java.lang.IllegalArgumentException:未知颜色引用变量sbColor
时出错。虽然变量abColor
的使用方式与sbColor
相同,但变量prefs = getSharedPreferences("AppPrefs", Context.MODE_PRIVATE);
String logged = prefs.getString("LOGGED", "OUT");
mRemoteConfig = FirebaseRemoteConfig.getInstance();
FirebaseRemoteConfigSettings remoteConfigSettings = new FirebaseRemoteConfigSettings.Builder()
.setDeveloperModeEnabled(true)
.build();
mRemoteConfig.setConfigSettings(remoteConfigSettings);
HashMap<String, Object> defaults = new HashMap<>();
defaults.put("action_bar_color", R.color.colorPrimary);
defaults.put("status_bar_color", R.color.colorPrimaryDark);
mRemoteConfig.setDefaults(defaults);
final Task<Void> fetch = mRemoteConfig.fetch(0);
fetch.addOnSuccessListener(this, new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
mRemoteConfig.activateFetched();
SharedPreferences.Editor editor = prefs.edit();
editor.putString("action_bar_color", mRemoteConfig.getString("action_bar_color"));
editor.putString("status_bar_color", mRemoteConfig.getString("status_bar_color"));
editor.apply();
的效果非常好。
请您帮我解释为什么Android Studio会给我这个错误。
DB::getSchemaBuilder()->getColumnType($tableName, $colName)
答案 0 :(得分:0)
看起来像这样:export.js
您将颜色保存为int资源标识符,但在此处:defaults.put("status_bar_color", R.color.colorPrimaryDark);
您要加载字符串表示颜色。
因此,请尝试在String sbColor = sharedPreferences.getString("status_bar_color", "#ffffff");
方法中使用ContextCompat.getColor(context, R.color.colorPrimaryDark);
。
对于defaults.put()
参数,您可以传递context
(如果在Activity中调用该方法),或this
(如果在片段中)。
现在你必须将颜色保存在String而不是int中。请执行以下操作:
getActivity()
你应该让int sbColor = ContextCompat.getColor(this, R.color.colorPrimaryDark);
// Convert to String Color
String hexSbColor = String.format("#%06X", (0xFFFFFF & sbColor));
defaults.put("status_bar_color", hexSbColor);
成为一个String-String地图:
defaults