0

我有一个包含三个活动的选项卡主机,并且在每个活动中我有 4 个按钮。

在每次按下按钮时,我都会像这样更改背景可绘制资源

 case R.id.button1:
        if (isclick) {
            b1.setBackgroundResource(R.drawable.icon4hlt);
        } else {
            b1.setBackgroundResource(R.drawable.icon4);
        }

那么现在如何保存所有三个子活动中每个按钮的按下状态,以便当我从一个活动移动到另一个活动时,按钮按下状态将反映在返回时。第一个活动->按下所有4个按钮->转到第二个活动->返回第一个活动->第一个活动中的所有按钮都应处于按下状态

即使按主页按钮和返回按钮也应该可以工作。

我知道共享偏好是一个好主意,我经历了相关的线程,但我没有任何想法如何做到这一点。

任何帮助总是很感激,谢谢

4

1 回答 1

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
    }
} 

但我仍然认为当您在选项卡之间切换时不应重置按下状态,因为不会重新创建活动。

于 2012-12-07T14:35:13.420 回答