Android:如何在tabhost中保存按下状态的多个按钮

时间:2012-12-07 13:17:20

标签: android button onclick android-tabhost sharedpreferences

我有一个包含三个活动的标签主机,在每个活动中我有4个按钮。

按下每个按钮,我正在更改背景可绘制资源,如下所示

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

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

即使在主页按钮和后退按钮也按下它应该工作。

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

我们非常感谢任何帮助,谢谢

1 个答案:

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

但是我仍然认为当你在标签之间切换时,按下状态不应该重置,因为没有重新创建活动。