Подтвердить что ты не робот

Android Imagebutton change Изображение OnClick

Я только что добавил новую папку с возможностью перемещения по папке res. В скользящей папке я скопировал файл ic_launcher.png из папки drawable-hdpi. Я хочу изменить стандартное изображение ImageButton через новое, когда нажимаю кнопку. Я написал код, но когда я запускаю приложение, он сработает.

Button imgButton; 

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    findViewById(R.id.imgButton).setOnClickListener(imgButtonHandler);      
}

View.OnClickListener imgButtonHandler = new View.OnClickListener() {

    public void onClick(View v) {

        imgButton.setBackgroundResource(R.drawable.ic_launcher);

    }
};

EDIT: я изменил это, и это тоже не работает.

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    imgButton = (Button) findViewById(R.id.imgButton);
    imgButton.setOnClickListener(imgButtonHandler);
}


View.OnClickListener imgButtonHandler = new View.OnClickListener() {

    public void onClick(View v) {
        imgButton.setBackgroundResource(R.drawable.ic_launcher);

    }
};

ИЗМЕНИТЬ 2: ЭТО РАБОТЫ. Спасибо всем.

ImageButton button;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    button= (ImageButton)findViewById(R.id.imgButton);
    button.setOnClickListener(imgButtonHandler);
}


View.OnClickListener imgButtonHandler = new View.OnClickListener() {

    public void onClick(View v) {
        button.setBackgroundResource(R.drawable.ic_launcher);

    }
};
4b9b3361

Ответ 1

это немного меня обмануло - это должно быть "setImageResource" вместо "setBackgroundResource" :)!!

Следующее прекрасно работает:

ImageButton btn = (ImageButton)findViewById(R.id.imageButton1);       
 btn.setImageResource(R.drawable.actions_record);

а при использовании setBackgroundResource фактическое изображение остается при изменении фонового изображения, ведьма ведет к уродливому объекту imagebutton.

Спасибо.

Ответ 2

Это потому, что imgButton имеет значение null. Вместо этого попробуйте:

findViewById(R.id.imgButton).setBackgroundResource(R.drawable.ic_action_search);

или гораздо легче читать:

imgButton = (Button) findViewById(R.id.imgButton);
imgButton.setOnClickListener(imgButtonHandler);

то в onClick: imgButton.setBackgroundResource(R.drawable.ic_action_search);

Ответ 3

<ImageButton android:src="@drawable/image_btn_src" ... />

image_btn_src.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@drawable/icon_pressed"/>
<item android:state_pressed="false" android:drawable="@drawable/icon_unpressed"/>
</selector>

Ответ 4

Вы можете сделать это прямо в своем XML файле:

android:onClick="@drawable/ic_action_search"

Ответ 5

У вас есть кнопка подтверждения для вашей переменной imgButton:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    imgButton = (Button) findViewById(R.id.imgButton);
    imgButton.setOnClickListener(imgButtonHandler);
}