java.lang.IllegalArgumentException:未知颜色

时间:2017-10-04 21:51:09

标签: android

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)

1 个答案:

答案 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