Как устранить ошибку в значении по умолчанию CheckBoxPreference в Android?

#java #android

#java — язык #Android #java

Вопрос:

Поскольку мой MainActivity не запускает Tab2Activity при запуске, пока пользователь не нажмет кнопку настройки для запуска PreferenceActivity, поэтому я должен сначала проверить логическое значение audioStatus, чтобы избежать нежелательного логического результата, но после этого шага я теряюсь из-за ошибки в CheckBoxPreference, которую он мне выдает…

Теперь я не знаю, как работать с логическим сравнением, чтобы получить аудио даже без перехода к Tab2Activity? Основная проблема, с которой я сталкиваюсь, заключается в том, что я работаю с логикой, но получаю желаемый результат..

Я новичок kinna в Java / Android и в настоящее время создаю приложение car blackbox, может кто-нибудь мне помочь… Спасибо 🙂

Мой файл 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:

сохраните свои настройки в 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’. Если вы хотите, чтобы это было значение по умолчанию, тогда просто используйте «false» в качестве значения по умолчанию, когда вы идете, чтобы получить значение с помощью getBoolean(строка, defValue)

Комментарии:

1. моя проблема здесь с CheckBoxPreference только с двумя состояниями true / false, а не с блогом, который вы мне дали, в котором говорится только о других настройках… И в CheckBoxPreference, похоже, есть ошибка code.google.com/p/android/issues/detail?id=6641 , вот почему я обращаюсь за помощью здесь, чтобы найти более приемлемое решение для моей ситуации здесь..

2. я знаю, что вы имеете в виду, просто установите его в MainActivity, но я не мог бы сделать это таким образом, потому что мой CheckBoxPreference инициализируется только в том случае, если я нажимаю на кнопку настройки, чтобы инициализировать мой Tab2Activity.. Вот почему я должен сначала установить / по умолчанию или «принудительно» записать аудиопроигрыватель… Но теперь я запутался в том, как мне решить эту проблему…