При попытке изменить цвет одного Shape'а из класса, меняются цвета всех фигур в разметке

232
19 сентября 2017, 06:28

У меня есть десять кнопок при нажатии которых происходит сохранение значения кнопки, далее при повторном открытии активности рядом должен загораться зеленый кружок обозначающий то, какая именно была нажата кнопка. Но проблема в том что когда я выбираю последнюю кнопку, закрываю активность, а затем повторно открываю, то цвета меняются у всех элементов. Вот так:

Не имеет значение какое количество элементов на экране, всегда при выборе последнего в списке, получается такая проблема, все остальные кнопки работают как надо. Подскажите, как исправить!?

public class SettingsTheme extends AppCompatActivity {
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.settings_theme);
        bkg_color_triger();
        final ImageButton btn_preset_1,btn_preset_2,btn_preset_3,btn_preset_4,btn_preset_5,btn_preset_6,btn_preset_7,btn_preset_8,btn_preset_9,btn_preset_10;
        btn_preset_1 = (ImageButton) findViewById(R.id.img_btn_1);btn_preset_2 = (ImageButton) findViewById(R.id.img_btn_2);btn_preset_3 = (ImageButton) findViewById(R.id.img_btn_3);btn_preset_4 = (ImageButton) findViewById(R.id.img_btn_4);btn_preset_5 = (ImageButton) findViewById(R.id.img_btn_5);btn_preset_6 = (ImageButton) findViewById(R.id.img_btn_6);btn_preset_7 = (ImageButton) findViewById(R.id.img_btn_7);btn_preset_8 = (ImageButton) findViewById(R.id.img_btn_8);btn_preset_9 = (ImageButton) findViewById(R.id.img_btn_9);btn_preset_10 = (ImageButton) findViewById(R.id.img_btn_10);
        btn_preset_1.setOnClickListener(new View.OnClickListener() {public void onClick(View v) {save_theme_preset("1");}});
        btn_preset_2.setOnClickListener(new View.OnClickListener() {public void onClick(View v) {save_theme_preset("2");}});
        btn_preset_3.setOnClickListener(new View.OnClickListener() {public void onClick(View v) {save_theme_preset("3");}});
        btn_preset_4.setOnClickListener(new View.OnClickListener() {public void onClick(View v) {save_theme_preset("4");}});
        btn_preset_5.setOnClickListener(new View.OnClickListener() {public void onClick(View v) {save_theme_preset("5");}});
        btn_preset_6.setOnClickListener(new View.OnClickListener() {public void onClick(View v) {save_theme_preset("6");}});
        btn_preset_7.setOnClickListener(new View.OnClickListener() {public void onClick(View v) {save_theme_preset("7");}});
        btn_preset_8.setOnClickListener(new View.OnClickListener() {public void onClick(View v) {save_theme_preset("8");}});
        btn_preset_9.setOnClickListener(new View.OnClickListener() {public void onClick(View v) {save_theme_preset("9");}});
        btn_preset_10.setOnClickListener(new View.OnClickListener() {public void onClick(View v) {save_theme_preset("10");}});
    }
    public void save_theme_preset(String value) {
        SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
        SharedPreferences.Editor editor = sp.edit();
        editor.putString("default_preset", value);
        editor.apply();
        bkg_color_triger();
        finish();
    }
    // включает зеленые тригеры при выборе темы
    public void bkg_color_triger() {
        SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
        String def_pres = sp.getString("default_preset", "1");
        String color_triger_1 = "#00000000", color_triger_2 = "#00000000", color_triger_3 = "#00000000", color_triger_4 = "#00000000", color_triger_5 = "#00000000", color_triger_6 = "#00000000", color_triger_7 = "#00000000", color_triger_8 = "#00000000", color_triger_9 = "#00000000", color_triger_10 = "#00000000";
        if ((def_pres).equals("1")) {color_triger_1 = "#ff5bff5e";}
        if ((def_pres).equals("2")) {color_triger_2 = "#ff5bff5e";}
        if ((def_pres).equals("3")) {color_triger_3 = "#ff5bff5e";}
        if ((def_pres).equals("4")) {color_triger_4 = "#ff5bff5e";}
        if ((def_pres).equals("5")) {color_triger_5 = "#ff5bff5e";}
        if ((def_pres).equals("6")) {color_triger_6 = "#ff5bff5e";}
        if ((def_pres).equals("7")) {color_triger_7 = "#ff5bff5e";}
        if ((def_pres).equals("8")) {color_triger_8 = "#ff5bff5e";}
        if ((def_pres).equals("9")) {color_triger_9 = "#ff5bff5e";}
        if ((def_pres).equals("10")) {color_triger_10 = "#ffffff";}

        ImageView e = (ImageView)findViewById(R.id.c_mm_1);
        e.setBackgroundResource(R.drawable.circle_mini_in_mini);
        GradientDrawable g = (GradientDrawable) e.getBackground().getCurrent();
        g.setColor(Color.parseColor(color_triger_1));
        ImageView e2 = (ImageView)findViewById(R.id.c_mm_2);
        e2.setBackgroundResource(R.drawable.circle_mini_in_mini);
        GradientDrawable g2 = (GradientDrawable) e2.getBackground().getCurrent();
        g2.setColor(Color.parseColor(color_triger_2));
        ImageView e3 = (ImageView)findViewById(R.id.c_mm_3);
        e3.setBackgroundResource(R.drawable.circle_mini_in_mini);
        GradientDrawable g3 = (GradientDrawable) e3.getBackground().getCurrent();
        g3.setColor(Color.parseColor(color_triger_3));
        ImageView e4 = (ImageView)findViewById(R.id.c_mm_4);
        e4.setBackgroundResource(R.drawable.circle_mini_in_mini);
        GradientDrawable g4 = (GradientDrawable) e4.getBackground().getCurrent();
        g4.setColor(Color.parseColor(color_triger_4));
        ImageView e5 = (ImageView)findViewById(R.id.c_mm_5);
        e5.setBackgroundResource(R.drawable.circle_mini_in_mini);
        GradientDrawable g5 = (GradientDrawable) e5.getBackground().getCurrent();
        g5.setColor(Color.parseColor(color_triger_5));
        ImageView e6 = (ImageView)findViewById(R.id.c_mm_6);
        e6.setBackgroundResource(R.drawable.circle_mini_in_mini);
        GradientDrawable g6 = (GradientDrawable) e6.getBackground().getCurrent();
        g6.setColor(Color.parseColor(color_triger_6));
        ImageView e7 = (ImageView)findViewById(R.id.c_mm_7);
        e7.setBackgroundResource(R.drawable.circle_mini_in_mini);
        GradientDrawable g7 = (GradientDrawable) e7.getBackground().getCurrent();
        g7.setColor(Color.parseColor(color_triger_7));
        ImageView e8 = (ImageView)findViewById(R.id.c_mm_8);
        e8.setBackgroundResource(R.drawable.circle_mini_in_mini);
        GradientDrawable g8 = (GradientDrawable) e8.getBackground().getCurrent();
        g8.setColor(Color.parseColor(color_triger_8));
        ImageView e9 = (ImageView)findViewById(R.id.c_mm_9);
        e9.setBackgroundResource(R.drawable.circle_mini_in_mini);
        GradientDrawable g9 = (GradientDrawable) e9.getBackground().getCurrent();
        g9.setColor(Color.parseColor(color_triger_9));
        ImageView e10 = (ImageView)findViewById(R.id.c_mm_10);
        e10.setBackgroundResource(R.drawable.circle_mini_in_mini);
        GradientDrawable g10 = (GradientDrawable) e10.getBackground().getCurrent();
        g10.setColor(Color.parseColor(color_triger_10));
    }
}
READ ALSO
Всплывающие блоки по клику через js

Всплывающие блоки по клику через js

Добрый вечер, коллеги! Прошу помочь человеку, недавно начавшему изучать jsЕсть задача - некая боковая навигация, состоящая из списка со ссылками,...

174
Использование связей Active Record в Ruby on Rails

Использование связей Active Record в Ruby on Rails

Имеются два класса: Article (has_many comments) и Comment(belongs_to article)

184
div блок с прокруткой

div блок с прокруткой

Футер и хедер должны быть всегда статичны, а высота дивов регулироваться автоматически, в зависимости от высоты окнаКак можно решить эту...

403