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

时间:2011-04-27 13:49:14

标签: java android

因为我的mainActivity在启动时没有运行我的Tab2Activity直到用户按下设置按钮来运行PreferenceActivity,所以我必须首先检查audioStatus布尔值以避免不必要的布尔结果但是在这一步之后我是kinna由于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" />

1 个答案:

答案 0 :(得分:0)

将您的设置保存到SharedPreferences,然后从那里读取它们,而不是依赖于Tab2Activity中公共布尔值的状态。

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”作为默认值