更改活动时setBackgroundResource
-
29-10-2019 - |
题
在我的一个活动中,我有一个 ImageButton
点击后,通过使用 setBackgroundResource()
.我在该活动中工作正常,但是当我离开该活动并回到它时,按钮已更改回其在XML中设置的默认背景。有没有办法将后台资源永久设置为某些内容,直到再次单击按钮?
解决方案
您需要将图像按钮上的值存储在静态变量或SharedPreferences中,
例如声明一个变量
public static int bgresource;
现在在img按钮上点击
if(something) {
bgresource = R.drawable.img1
} else {
bgresource = R.drawable.img2
}
mylayout.setBackgroundResource(bgresource);
并且还在activity的onResume()中执行以下操作:
mylayout.setBackgroundResource(bgresource);
其他提示
使用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") ...
注:这将恢复当前选择的背景,即使应用程序已关闭。
保存您在SharedPreferences中用作背景的图像的URL/id,并确保在每次创建活动时设置它。否则,下次创建活动时将使用XML文件中指定的背景。
您应该复盖您的活动 onResume()
方法。使您的活动或按钮保持状态(按下或未按下),并在 onResume()
方法,检查此状态并更改背景。
你可以使用这样的技巧:
//outside the onCreate:
boolean resourceIsSet = false;
//inside the onCreate:
if(!resourceIsset) {
setBackgroundResource();
resourceIsset= true;
}
或者你可以使用一个 共享/共享 正如其他建议
不隶属于 StackOverflow