0

在我的一项活动中,我有一个ImageButton单击更改背景资源的方法setBackgroundResource()。我在该活动中工作正常,但是当我离开该活动并返回该活动时,按钮已更改回其在 XML 中设置的默认背景。有没有办法将背景资源永久设置为某种东西,直到再次单击该按钮?

4

5 回答 5

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);
于 2012-01-16T15:16:16.703 回答
1

使用共享首选项。

更改背景时:

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

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

于 2012-01-16T15:14:27.200 回答
0

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

于 2012-01-16T15:13:57.900 回答
0

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

于 2012-01-16T15:14:02.180 回答
0

你可以使用这样的技巧:

    //outside the onCreate:
    boolean resourceIsSet = false;

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

或者您可以按照其他建议使用SharedPreferences

于 2012-01-16T15:17:59.183 回答