更改活动时的setBackgroundResource

时间:2012-01-16 15:06:44

标签: android android-layout android-imagebutton

在我的一项活动中,我有一个ImageButton,点击后会使用setBackgroundResource()更改后台资源。我在该活动中工作得很好,但是当我离开该活动并回到它时,按钮已经变回其在XML中设置的默认背景。有没有办法将后台资源永久设置为某个东西,直到再次单击该按钮?

5 个答案:

答案 0 :(得分:3)

您需要将值存储在静态变量或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 :(得分:1)

使用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-Method中你需要输入:

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") ...

注意:这将恢复当前选择的背景,即使应用程序已关闭。

答案 2 :(得分:0)

保存您在SharedPreferences中用作背景的图像的URL / ID,并确保每次创建活动时都设置它。否则,下次创建活动时将使用XML文件中指定的背景。

答案 3 :(得分:0)

您应该覆盖您的活动onResume()方法。 让您的活动或按钮保持状态(按下或未按下),并使用onResume()方法检查此状态并更改背景。

答案 4 :(得分:0)

你可以使用这样的技巧:

    //outside the onCreate:
    boolean resourceIsSet = false;

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

或者您可以使用SharedPreferences作为其他建议