#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.. Вот почему я должен сначала установить / по умолчанию или «принудительно» записать аудиопроигрыватель… Но теперь я запутался в том, как мне решить эту проблему…