2011-04-27 60 views
1

因爲我的mainActivity在啓動時沒有運行我的Tab2Activity,直到用戶按下設置按鈕來運行PreferenceActivity,因此我必須首先檢查audioStatus布爾值以避免不需要的布爾結果,但是在這一步之後,我是kinna lost由於CheckBoxPreference中的錯誤,它給我...如何解決android中的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" /> 

回答

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); 
} 

您鏈接的錯誤描述問題,當您嘗試設置默認的共享偏好值「假」。如果你希望這是默認值,那麼當你去使用getBoolean(string,defValue)檢索值時,只需使用「false」作爲默認值。

+0

我的問題是CheckBoxPreference只有兩個狀態true/false而不是與你給我的博客,只談論其他類型的首選項...和CheckBoxPreference似乎有bug http://code.google.com/p/android/issues/detail?id=6641,這就是爲什麼我尋求幫助在這裏尋找一個更適合我的情況在這裏的解決方案.. – zack 2011-04-27 15:03:59

+0

我知道你的意思只是它在mainActivity,但我不能這樣做,因爲我的CheckBoxPreference只是初始化,如果我點擊一個設置按鈕初始化我的Tab2Activity ..這就是爲什麼我必須先預設/默認或「強制」audioplayer錄音...但現在我搞砸/混淆我應該如何解決這個問題... – zack 2011-04-29 07:11:11

相關問題