我正在使用SharePreduce进行用户界面设置。
当我想获取我的key_son
的布尔
值时,无论它是真是假,都可以播放声音。
但是,当我点击button3
时,即使我将key_son
的值更改为false,我总是播放歌曲,你能帮我弄清楚它出了什么问题吗?
正常情况下,我的< code>boolean playSound应该为true或false,
当我单击按钮时,如果playSound为true,则我播放歌曲,否则我不播放它,但似乎布尔playSound
永远不会更改此值,它保持为true
public class MainActivity extends AppCompatActivity {
Button button;
Button button2;
Button button3;
TextView textView;
MediaPlayer mediaPlayer;
private boolean playSound;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button) findViewById(R.id.button);
button2 = (Button) findViewById(R.id.button2);
button3 = (Button) findViewById(R.id.button3);
textView = (TextView) findViewById(R.id.textView);
mediaPlayer = new MediaPlayer();
mediaPlayer = MediaPlayer.create(getApplicationContext(), R.raw.sonvoix);
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
playSound = sharedPreferences.getBoolean("key_son", true);
button3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(playSound){
mediaPlayer.start();
}else{
mediaPlayer.stop();
}
}
});
}
}
这是我的主要活动,我成功地得到了布尔值。实际上我有两个布尔值要得到。一个是歌曲的布尔值,一个是振动器的布尔值。
现在的问题是,我得到了两个布尔值,但当我将一个值更改为true或false时,它会自动影响第二个值。
例如:playsound=true和isVibrating=true然后我点击按钮3和按钮4,一切正常,歌曲播放和振动正常
但当我将playsound或IsVibration更改为false时,所有这些都发生了变化,因此当我再次单击按钮3和按钮4时,歌曲没有播放,但振动也不起作用,我认为一个变化会影响所有我不知道为什么
public class MainActivity extends AppCompatActivity {
Button button3;
Button button4;
Vibrator vibrator;
private boolean playSound;
private boolean isVibrating;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
button3 = (Button) findViewById(R.id.button3);
button4 = (Button) findViewById(R.id.button4);
button3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(!SettingsActivity.playSound){
AudioPlay.playAudio(MainActivity.this, R.raw.sonvoix);
}
}
});
button4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(!SettingsActivity.isVibrating){
vibrator.vibrate(400);
}
}
});
}
}
<SwitchPreference
android:defaultValue="true"
android:key="key_son"
android:summary="Activer ou désactiver le son de touche"
android:title="Son" />
<SwitchPreference
android:defaultValue="false"
android:key="key_vibreur"
android:summary="Activer ou désactiver le vibreur"
android:title="Vibreur" />
公共类设置Activity扩展首选项Activity {
public static boolean playSound;
public static boolean isVibrating;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getFragmentManager().beginTransaction().replace(android.R.id.content, new MainSettingsFrament()).commit();
SharedPreferences sharedPreferencesPlaySound = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
playSound = sharedPreferencesPlaySound.getBoolean("key_musique", false);
SharedPreferences sharedPreferencesVibrating = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
isVibrating = sharedPreferencesVibrating.getBoolean("key_vibreur", true);
}
要从<code>SharedReferences</code>中获取存储值,首先必须在那里存储一些东西。为此,您必须使用SharedReferences.Editor
比如:
SharedPreferences sp= getSharedPreferences("prefs", Context.MODE_PRIVETE);
SharedPreferences.Editor editor = sp.edit();
//1st parameter is key and 2nd is value to store
editor.putBoolean("key_son", true);
editor.commit();
要从共享首选项
中读取,请使用:
//Declare SharedPreferences only if you didn't before
SharedPreferences sp= getSharedPreferences("prefs", Context.MODE_PRIVETE);
boolean playSound = sp.getBoolean("key_son", true);
现在,您的< code>playSound已经可以使用了。
从首选项获取实例
sharedPreferences = getContext().getSharedPreferences(preferences,
Activity.MODE_PRIVATE);
保存到首选项
sharedPreferences.edit().putBoolean(key, value).apply();
从首选项获取
sharedPreferences.getBoolean(key, defaultValue);
问题内容: 我正在法国学习,所以很难找到法语教程来解决我的问题。因此,我不得不问我的问题,希望有一个令人满意的解决方案。 我的问题是我在firebase上读取数据时遇到了麻烦,并且花了三天时间。 我有这样的结构: 我已经开始编写一些代码,可以恢复密钥,但是无法恢复这些值“ nom”,“ argent”等。 问题答案: John的替代方法是使用来获取每个属性:
我正试图建立一个应用程序,用户将能够连接到我的应用程序,在twitter上输入关键字进行搜索,然后结果将被存储在数据库中。从用户输入关键词的那一刻起,我就想跟踪twitter上的内容。这些结果将被进一步分析,一些统计数据将呈现给用户。到目前为止,我已经使用tweppy和twitter流api来获取推文。但是我意识到我不能有一个以上的开放流连接(用于并行搜索多个关键字)。< br >我搜索了stac
问题内容: 给定如下所示的URL,如何解析查询参数的值?例如,在这种情况下,我需要的值。 我在我的环境中使用Django;有没有一种方法可以帮助我? 我尝试使用,但它没有返回ghi我希望的值。 问题答案: Python 2: Python 3: 返回值列表,因此上述代码将打印。
问题内容: 我正在wxPython中编写一个小应用程序,它具有一个matplotlib图形(使用wxagg后端)面板。我想为用户添加将图中当前绘制的X,Y数据导出到文本文件的功能。有无创方法可以做到这一点吗?我已经搜索了很多,似乎什么也找不到,尽管我觉得它非常简单而且就在我的面前。 我绝对可以获取数据,并在绘制数据时将其存储在某个位置,并使用它-但这会侵入我的代码的较低级别。如果我可以做些简单的事
关于我的上一个问题,我想从创建的sqlite数据库中检索ID,将其作为Intent putExtra()中的数据传递,以便将其用作PendingContent的ID。getActivity()。目前,我正在使用queryNumEntries为从我的DatabaseManager中的以下代码添加到数据库中的每个提醒设置id。类别: 并在AddActivity中调用它。班 在创建条目时,除了尝试此操作
我想从数据库中检索整个表并将其显示到我的jsp页面中,但我得到了一个错误 我的工作人员豆。java是 而我的getAllDetailDAO.java是 连接提供程序包com.staff.db; 而我的DisplayAllDetail.jsp是 我的错误是 StackTrace:org.apache.jasper.servlet.jspServletwrapper.handleJSPExceptio