java - 如何解决android中CheckBoxPreference默认值的错误?

标签 java android

因为我的 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/

相关文章:

android - 在 Android 中正确使用继承

Samsung Tab GT-P3100 中的 Android 下载管理器问题

android - 为什么我会收到 getString 错误?以及如何解决?

java - 流式传输 2d 数组、修剪值并收集回 2d 数组

Java SWT Composite 1 px 填充

java - 使用java将文件转换为PDF

java - 启动 3d 派对应用程序后崩溃,该应用程序崩溃后

java - Play Framework - 如何在现有应用程序中添加模块

java - 在 JDBC 中使用特殊 SQL 关键字更新命令

java - 棕地 |听诊器 | ":com.facebook.stetho:stetho-okhttp:1.2.0' 依赖于一个或多个 Android 库但是是一个 jar”