«Правильный» ответ должен быть обновлен.
setBackgroundDrawable()
устарело в API 16
setBackground()
добавлено в API 16
Лучшим ответом может быть:
int replace = R.drawable.my_image;
myButton.setBackgroundResource(replace);
myButton.invalidate();
или просто:
myButton.setBackgroundResource(R.drawable.my_image);
myButton.invalidate();
Будет работать с уровня API 1-18