У меня есть две картинки, они кликабельные, нажимая на эти картинки, я меняю цвет Action Bar. Но один код работает отлично, другой абсолютно такой же , но немного с другими названиями не работает.
1 КОД
sharedPreferences = getSharedPreferences("ShaPreferences", Context.MODE_PRIVATE);
final SharedPreferences sharedPreferences = getSharedPreferences("ShaPreferences", Context.MODE_PRIVATE);
String hexColor = sharedPreferences.getString("toolbarColor", "");
getSupportActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor(hexColor)));
pinkcolor.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String hexColor = "#eca190";
getSupportActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor(hexColor)));
SharedPreferences.Editor editor=sharedPreferences.edit();
editor.putString("toolbarColor",hexColor);
editor.commit();
}
});
2 КОД
sharedPreferences1 = getSharedPreferences("ShaPreferences1", Context.MODE_PRIVATE);
final SharedPreferences sharedPreferences1 = getSharedPreferences("ShaPreferences1", Context.MODE_PRIVATE);
String hexColor1 = sharedPreferences1.getString("toolbar", "");
getSupportActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor(hexColor1)));
greencolor.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String hexColor1 = "#8bc34a";
getSupportActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor(hexColor1)));
SharedPreferences.Editor editor1=sharedPreferences1.edit();
editor1.putString("toolbar",hexColor1);
editor1.commit();
}
});
Ошибку выдает на:
getSupportActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor(hexColor1)));
Сама ошибка:
Caused by: java.lang.StringIndexOutOfBoundsException: length=0; index=0
Вам надо отработать ситуацию когда цвет еще не сохранен в настройках.
Вместо:
String hexColor = sharedPreferences.getString("toolbarColor", "");
String hexColor1 = sharedPreferences1.getString("toolbar", "");
Сделайте так:
String hexColor = sharedPreferences.getString("toolbarColor", "#eca190");
String hexColor1 = sharedPreferences1.getString("toolbar", "#8bc34a");
Это означает, что если toolbarColor или toolbar будут пустыми, то в переменные попадет значение которое вы задали по умолчанию
sharedPreferences.getString("toolbarColor", "ваше значение по умолчанию если toolbarColor пустой")
sharedPreferences1.getString("toolbar", "ваше значение по умолчанию если toolbar пустой")
Пояснение почему "первый код" работает а второй - нет: в первом случае вы сначала реализовали сохранение параметра, а потом добавили установку цвета. Во втором случае вы скопировали "первый код" но новая переменная toolbar пустая, потому что вы еще не сохранили её в настройки, но уже пытаетесь её загрузить, перевести в цвет и установить цвет.
Дополнительно. Вам нужно менять цвет тулбара из разных картинок. Значит у вас должна быть одна переменная, пусть будет toolbarColor, и единое имя общих настроек ShaPreferences
final SharedPreferences sharedPreferences = getSharedPreferences("ShaPreferences", Context.MODE_PRIVATE);
String hexColor = sharedPreferences.getString("toolbarColor", "#eca190"); // <-- по умолчанию розовый цвет
getSupportActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor(hexColor)));
pinkcolor.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String hexColor = "#eca190";
getSupportActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor(hexColor)));
SharedPreferences.Editor editor=sharedPreferences.edit();
editor.putString("toolbarColor",hexColor);
editor.commit();
}
});
greencolor.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String hexColor1 = "#8bc34a";
getSupportActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor(hexColor1)));
SharedPreferences.Editor editor1=sharedPreferences1.edit();
editor1.putString("toolbarColor",hexColor1);
editor1.commit();
}
});
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Я разрабатываю игровое дополнение для Minecraft и столкнулся со следующей проблемойКогда я выполняю команду на добавление клана, то происходит...
Пытаюсь подключиться к БДjar файл подключил как библиотеку
Как привязать url фото профиля из Storage и юзера чата с этим фото из Database в одном адаптере?
Банальнейший вопрос, но не могу найти на него ответВводим числа, что будут являться часами, минутами и секундами, как вывести в одну строку...