因为我的 mainActivity 在启动时不会运行我的 Tab2Activity,直到用户按下设置按钮来运行 PreferenceActivity,因此我必须首先检查 audioStatus boolean 值以避免不需要的 boolean 结果,但在这一步之后我想由于 CheckBoxPreference 中的错误而丢失,它给了我...
现在我不知道如何使用逻辑比较来获取音频,即使不导航到 Tab2Activity?我面临的主要问题是处理逻辑并获得理想的结果..
我对 java/android 很陌生,目前正在创建一个汽车黑盒应用程序,有人可以帮助我......谢谢:)
我的mainActivity文件
if(Tab2Activity.audioPref == false)
audioStatus = false;
else
audioStatus = Tab2Activity.audioPref;
if(audioStatus == false)
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
if(audioStatus == false)
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
我的 Tab2Activity.java 文件
public static boolean audioPref;
public static String timeIntervalPref;
public void getPrefs() {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
audioPref = prefs.getBoolean("AudioPref", true);//Suppose to produce "false" isn't it?
timeIntervalPref = prefs.getString("TimeIntervalPref", "60000");
}
}
我的 xml 文件
<CheckBoxPreference
android:title="Audio"
android:defaultValue="True"
android:summary="Select w/o Audio when Recording"
android:key="AudioPref" />
最佳答案
将您的设置保存到 SharedPreferences,然后从那里读取它们,而不是依赖 Tab2Activity 中公共(public) boolean 值的状态。
http://developer.android.com/reference/android/content/SharedPreferences.html
使用示例: http://saigeethamn.blogspot.com/2009/10/shared-preferences-android-developer.html
编辑:我不知道你为什么试图从 tab2activity 获取首选项。 为什么不在 mainActivity 中执行以下操作:
SharedPreferences prefs=PreferenceManager.getDefaultSharedreferences(getBaseContext());
audioStatus=prefs.getBoolean("AudioPref",true); // (only use true if you want the default to be true if the value has not yet been set, otherwise you should be doing ("AudioPref",false) )
if(!audioStatus)
{
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
}
您链接的错误描述了当您尝试将默认共享首选项值设置为“false”时出现的问题。如果您希望将其设为默认值,则在使用 getBoolean(string,defValue) 检索值时只需使用“false”作为默认值
关于java - 如何解决android中CheckBoxPreference默认值的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5805176/