Я пытаюсь сравнить фон кнопки с файлом ресурсов. Например, у меня есть кнопка
КНОПКА
<Button
android:id="@+id/btnGenre"
android:layout_width="110dp"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:background="@drawable/frame_genre"
android:text="POST"
android:padding="16dp"
android:focusable="true"
android:clickable="true"/>
Фон имеет drawable/frame_genre
. Я пытаюсь сравнить этот фон с файлом Resouce.
Например
Drawable btnBackground = holder.btnGenre.getBackground();
if(btnBackground.getConstantState() == (getResources().getDrawable(R.drawable.frame_genre).getConstantState())){
Toast.makeText(context, "WORKED", Toast.LENGTH_SHORT).show();
}
Хорошо, этот оператор if
проверяет, какой фон у кнопки. Если его значение frame_genre
, то оно должно продолжаться до блока.
В моем случае фоновая кнопка имеет значение frame_genre
, а оператор if
должен иметь значение ИСТИНА. Но по какой-то причине, когда я регистрирую фон кнопки Log.d(TAG, btnBackground.getConstantState().toString());
и frame_genre
Log.d(TAG,getResources().getDrawable(R.drawable.frame_genre).getConstantState())
Он печатает две разные области памяти.
Я не могу понять, почему, в конце концов, я ' m указывает на тот же файл, который frame_genre
. Может кто-нибудь объяснить мне, что такое diffrent?
И я ищу способ проверить кнопку, потому что я хочу изменить ее фон после нажатия.