首选项活动中的java静音音频
我对Java开发相当陌生,我开始构建一个简单的Android应用程序。 我的主要活动创建了一个名为“GameView”的SurfaceView,我在其中创建了弹跳球。还创建了一个选项菜单(在my Main活动中),其中有一个“设置”项。点击设置按钮时,一个新的PreferenceActivity开始,称为SettingsActivity。在“设置”菜单中,我必须选中一些简单的复选框,这些复选框必须控制背景音乐和声音效果(静音/取消静音)
设置中的我的复选框。xml:
<CheckBoxPreference
安卓:summary="Turn music on or off"
安卓:defaultValue="true"
安卓:title="Music"
安卓:key="musicPref"
/>
<CheckBoxPreference
安卓:summary="Turn sounds on or off"
安卓:defaultValue="true"
安卓:title="Sounds"
安卓:key="soundPref"
/>
为了获得复选框的值,我在我的公共GameView函数中使用了以下代码:
SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context);
musicPlaying = sharedPrefs.getBoolean("musicPref", true );
soundPlaying = sharedPrefs.getBoolean("soundPref", true );
编辑: 我是否必须在我的设置菜单中定义一个点击事件,才能将更改后的复选框值传递给我的游戏视图
如何将更改后的值传递给gameview
# 1 楼答案
您正在使用SharedReferences读取设置,因此需要在其中写入值,例如:
此示例使用了一个ToggleButton,如果使用复选框,只需相应地更改它即可。编写设置的独立代码如下所示:
如果有多个进程(如服务)访问SharedReference,则需要
MODE_MULTI_PROCESS
标记,以强制android每次清理缓存的值# 2 楼答案
谢谢乔安米让我走上正轨。我做了一些广泛的研究,结果表明在首选项活动中所做的更改会自动保存。不需要侦听器,因此使用:
SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context); musicPlaying = sharedPrefs.getBoolean("musicPref", true ); soundPlaying = sharedPrefs.getBoolean("soundPref", true );
在我的游戏视图中足以检查我的首选项活动的更改