因为我的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" />
答案 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”作为默认值