setBackgroundResource при изменении действий - PullRequest
0 голосов
/ 16 января 2012

В одном из моих занятий у меня есть ImageButton, который при щелчке изменяет фоновый ресурс с помощью setBackgroundResource().Я прекрасно работаю в этом упражнении, но когда я покидаю это задание и возвращаюсь к нему, кнопка снова становится на заданный по умолчанию фон, заданный в XML.Есть ли способ навсегда установить фоновый ресурс, пока кнопка не будет нажата снова?

Ответы [ 5 ]

3 голосов
/ 16 января 2012

Вам необходимо сохранить значение на кнопке изображения в статической переменной или SharedPreferences,

Например, объявить переменную

public static int bgresource;

теперь при нажатии кнопки img

if(something) {
bgresource = R.drawable.img1
} else {
bgresource = R.drawable.img2
}

mylayout.setBackgroundResource(bgresource);

, а также выполните следующие действия в onResume () действия:

mylayout.setBackgroundResource(bgresource);
1 голос
/ 16 января 2012

Используйте SharedPreferences.

При изменении фона:

getSharedPreferences("background", MODE_PRIVATE).edit().putString("background","background_nr_1").commit();

или

getSharedPreferences("background", MODE_PRIVATE).edit().putString("background","background_nr_2").commit();

и так далее.Это сохранит строку, описывающую ваш текущий фон, в sharedPreferences.

В методе onCreate вам нужно указать:

String back = getSharedPreferences("background", MODE_PRIVATE).getString("background");

Это вернет вам "background_nr_x".Теперь вы можете выбрать фон:

if (back.equals("background_nr_1") { // set the Background associated with nr_1
else if (.... "nr_2") ...

Примечание: это восстановит текущий выбранный фон, даже если приложение было закрыто.

0 голосов
/ 16 января 2012

Вы можете использовать такой трюк:

    //outside the onCreate:
    boolean resourceIsSet = false;

    //inside the onCreate:
    if(!resourceIsset) {
        setBackgroundResource();
        resourceIsset= true;
    }

Или вы можете использовать SharedPreferences в качестве другого предлагаемого

0 голосов
/ 16 января 2012

Вам следует перезаписать метод Activity onResume(). Сделайте так, чтобы ваша активность или кнопка сохраняли состояние (нажата или не нажата) и, при методе onResume(), проверьте это состояние и измените фон.

0 голосов
/ 16 января 2012

Сохраните URL / идентификатор изображения, которое вы используете в качестве фона, в SharedPreferences и устанавливайте его каждый раз при создании действия.В противном случае фон, указанный в вашем XML-файле, будет использоваться при следующем создании действия.

...