Попытка изменить цвета с SharedPreferences, но это не получается правильно - PullRequest
0 голосов
/ 27 декабря 2018

Я пытаюсь изменить цвета некоторого текста и MainActivity из меню.У меня есть два меню, белого цвета и черного цвета, если я нажму белый, вернется цвет фона белый, кнопки черный, текст черный.Когда я нажму черный, вернется цвет фона серый, кнопки белые, текст белый.Я пытаюсь это сохранить с помощью SharedPreferences, но он не работает всегда, он принимает серый цвет.Если я делаю это без SharedPreferences и нажимаю на PopUpMenu, это меняет цвет, но с SharedPreferences это не работает, что-то пишу ложно.

Это мой код в MainActivity.class.

private boolean switchOnOff;
public static final String Change_Color = "Change_Color";


switchOnOff = getChangeColor();
    if (switchOnOff) {
        setColorGreyImageButton();
    } else {
        setColorWhiteImageButton();

    }

public void setColorGreyImageButton() {
    settings.setColorFilter(Color.parseColor("#757575"));
    voiceSearch.setColorFilter(Color.parseColor("#757575"));
    share.setColorFilter(Color.parseColor("#757575"));
    search.setColorFilter(Color.parseColor("#757575"));
    mainView.setBackgroundColor(Color.parseColor("#FFFFFF"));

}


public void setColorWhiteImageButton() {
    settings.setColorFilter(Color.parseColor("#FFFFFF"));
    voiceSearch.setColorFilter(Color.parseColor("#FFFFFF"));
    share.setColorFilter(Color.parseColor("#FFFFFF"));
    search.setColorFilter(Color.parseColor("#FFFFFF"));
    mainView.setBackgroundColor(Color.parseColor("#ff212121"));
}

public void saveColor(boolean changeColor) {
    SharedPreferences sharedPreferences = getSharedPreferences("Color", MODE_PRIVATE);
    SharedPreferences.Editor editor = sharedPreferences.edit();
    editor.putBoolean(getPackageName() + ".change_color", changeColor);
    editor.apply();

}


  private boolean getChangeColor() {
        SharedPreferences sharedPreferences = getSharedPreferences("Color", MODE_PRIVATE);
        return sharedPreferences.getBoolean(getPackageName() + ".change_color", false);
    }

Это PopUpMenu в MainActivity.class

mPopupMenu = new PopupMenu(this, settings);
        MenuInflater menuInflater = mPopupMenu.getMenuInflater();
        menuInflater.inflate(R.menu.main_settings, mPopupMenu.getMenu());
        settings.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mPopupMenu.show();
                mPopupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
                    @Override
                    public boolean onMenuItemClick(MenuItem item) {

                        int id = item.getItemId();
                        if(id == R.id.menu_back_white) {
                            saveColor(true);
                        } else if (id == R.id.menu_back_black) {
                            saveColor(false);
                        }
       return false;
        }
      });
    }
  });

1 Ответ

0 голосов
/ 27 декабря 2018

Вам нужно изменить это:

if(id == R.id.menu_back_white) {
   saveColor(false); //I changed true to false 
} else if (id == R.id.menu_back_black) {
   saveColor(true); //I changed false to true
}

, потому что, когда getChangeColor () ложно, вы устанавливаете его в белый цвет:

switchOnOff = getChangeColor();
    if (switchOnOff) {
        setColorGreyImageButton();
    } else {
        setColorWhiteImageButton();

    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...