我有一个包含三个活动的标签主机,在每个活动中我有4个按钮。
按下每个按钮,我正在更改背景可绘制资源,如下所示
case R.id.button1:
if (isclick) {
b1.setBackgroundResource(R.drawable.icon4hlt);
} else {
b1.setBackgroundResource(R.drawable.icon4);
}
所以现在如何在所有三个子活动中保存每个按钮的按下状态,这样当我从一个活动移动到另一个活动时,按下按钮状态将反映在向后移动。 第一项活动 - >按下所有4个按钮 - >转到第二个活动 - >回到第一个活动 - >第一个活动中的所有按钮都应处于按下状态
即使在主页按钮和后退按钮也按下它应该工作。
我知道共享偏好是一个好主意,我经历了相关的线程,但我没有得到任何想法如何做到这一点。
我们非常感谢任何帮助,谢谢
答案 0 :(得分:0)
如上所述,您可以在共享首选项中保留按下按钮的ID。您将为每个活动存储一组ID。像这样:
public void onStop() {
SharedPreferences pref = // getPreferences;
Set<String> ids = new HashSet<String>();
for (Button button : buttons) {
if (button is pressed) {
ids.add(String.valueOf(button.getId()));
}
}
pref.edit().putStringSet(CURRENT_ACTIVITY_NAME, ids).commit();
}
public void onStart() {
SharedPreferences pref = // get preferences;
Set<String> ids = pref.getStringSet(CURRENT_ACTIVITY_NAME, Collections.emptySet<String>());
for (String id : ids) {
Button button = findViewById(Integer.parseInt(id));
set button pressed
}
}
但是我仍然认为当你在标签之间切换时,按下状态不应该重置,因为没有重新创建活动。