为整个应用程序使用相同的actionBar开关

时间:2014-01-05 03:56:40

标签: android

我有两个活动,在每个活动中我需要设置一个动作条开关来控制声音......

        actionBarSwitch = new Switch(this);

        actionBar = getActionBar();
        actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM, ActionBar.DISPLAY_SHOW_CUSTOM);
        actionBar.setCustomView(actionBarSwitch, new ActionBar.LayoutParams(
                ActionBar.LayoutParams.WRAP_CONTENT, ActionBar.LayoutParams.WRAP_CONTENT,
                Gravity.CENTER_VERTICAL | Gravity.END));
        actionBar.setTitle(title);
        actionBarSwitch.setText(sfx);
        actionBarSwitch.setTextColor(res.getColor(R.color.white));
        actionBarSwitch.setChecked(soundOn);
        actionBarSwitch.setOnCheckedChangeListener(this);

对此的麻烦是,每次我更改活动时,我都需要将检查开关的布尔值传递给另一个活动。我收到错误而不是处理它们我觉得如果我的整个应用程序只在操作栏中共享一个单一开关就会更容易,所以我不必跟踪它的状态。这可能吗?

编辑:我正在使用像这样的共享偏好......

集:

SharedPreferences prefs = getApplicationContext().getSharedPreferences(
                "Settings", Context.MODE_PRIVATE);
        prefs.edit().putBoolean("soundOn", soundOn);
        prefs.edit().commit();

收到:

SharedPreferences prefs = getApplicationContext().getSharedPreferences(
                "Settings", Context.MODE_PRIVATE);
        soundOn = prefs.getBoolean("soundOn", true);

但它不起作用,为什么?

1 个答案:

答案 0 :(得分:1)

SharedPreferences中保存切换状态,在创建每个Activity时检查SharedPreferences中的值并相应地设置切换。这可能是你提出要求的最简单方法。