Android: получить фоновый ресурс - PullRequest
0 голосов
/ 20 мая 2019

У меня много кнопок с различным настраиваемым фоном, определенным в drawable.После нажатия кнопки я хочу изменить фоновый ресурс для рисования в зависимости от фактического ресурса.

Я пытаюсь с помощью этого кода получить фактический ресурс и сравнить его со всеми нарисованными, но он не работает,любой случай подтвержден.Кроме того, каждый раз, когда я нажимаю кнопку «Журналы первый, второй и третий», каждый раз печатаются разные значения (не должны быть одинаковыми?)

private void selectNewCell(){
        Log.d("ChangeBG","Select new cell");
        Button btn = buttonMatrix[selectedCoordinates.getI()][selectedCoordinates.getJ()];
        Drawable actualBG = btn.getBackground();
        Log.d("Actual", "Value " + actualBG.getConstantState());
        Log.d("First", "Value " + getResources().getDrawable(R.drawable.button_bg).getConstantState());
        Log.d("Second", "Value " + getResources().getDrawable(R.drawable.button_bg_bot).getConstantState());
        Log.d("Third", "Value " + getResources().getDrawable(R.drawable.button_bg_right).getConstantState());
        if(actualBG.getConstantState().equals(getResources().getDrawable(R.drawable.button_bg).getConstantState())){
            btn.setBackgroundResource(R.drawable.button_bg_selected);
            Log.d("ChangeBG","Case1");
        } else if(actualBG.getConstantState().equals(getResources().getDrawable(R.drawable.button_bg_bot).getConstantState())){
            btn.setBackgroundResource(R.drawable.button_bg_bot_selected);
            Log.d("ChangeBG","Case2");
        } else if(actualBG.getConstantState().equals(getResources().getDrawable(R.drawable.button_bg_right).getConstantState())){
            btn.setBackgroundResource(R.drawable.button_bg_right_selected);
            Log.d("ChangeBG","Case3");
        }
    }
...