Đổi background button sau mỗi lần click

Mình đang làm một cái button có đổi background sau mỗi lần nhấn nhưng chưa được :confounded: :confounded:
Đây là phần code của mình:

  • main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center">

    <Button
		
		android:id="@+id/main_btn"
		android:background="@drawable/button_pause"
		android:layout_width="200dp"
		android:layout_height="200dp"/>

</RelativeLayout>

*MainActivity.java

btn_play.setOnClickListener(new View.OnClickListener()
{
	public void onClick(View v)
	{
		
		if(btn_play.getBackground() == getResources().getDrawable(R.drawable.button_pause))
		{
			btn_play.setBackground(getResources().getDrawable(R.drawable.button_play));
		}
		else
		
		{
			btn_play.setBackground(getResources().getDrawable(R.drawable.button_pause));
		}
               }
       });

Nó chỉ đổi được lần nhấn đầu tiên thôi, con mấy lần sau thì không.
Mọi người có thể chỉ cho mình đoạn sai được không ạ?
Cảm ơn nhiều ạ!!!

Cái này là so sánh địa chỉ nha bạn. Thử xài 1 biến toàn cục boolean thử xem

if(isPlaying){
    //do something
}else{
    //do something
}
isPlaying=!isPlaying

Cách thứ 2 là so sánh 2 object Drawable bằng cách so sánh pixel hoặc byte

 drawable1.bytesEqualTo(drawable2) 
 drawable1.pixelsEqualTo(drawable2)

Source: https://stackoverflow.com/questions/36373547/comparing-resources-within-two-drawables/36373569#36373569

4 Likes

Xin lỗi vì mình đã trả lời muộn :confounded:
Nhưng tại sao khi mình nhấn lần đầu tiên thì nó vẫn bình thường vậy?

Có thể là bạn để nút play hiện lên trước thì khi nhấn nó vô vòng else và chuyển thành nút pause. Mình nghĩ vậy

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?