我有一个偏好的小ap.在这个课程中,我设置了onPreferenceClick来从GPS获取坐标.当听众返回时,我希望自动设置lat/long textedits.我已经尝试过每一个源样本,没有运气:
public void onLocationChanged(Location l) {
Log.d("H","Location Received: "+l.toString());
prefLocation.setSummary(l.toString());
SharedPreferences settings = getSharedPreferences(PREFS_NAME, MODE_PRIVATE);
SharedPreferences.Editor editor1 = settings.edit();
editor1.putString("posLat","xxx");
editor1.commit();
}
Run Code Online (Sandbox Code Playgroud)
当我单击我的PreferenceScreen并且位置监听器返回时执行此代码时,具有键"posLat"的EditTextPreference仍显示旧值.
我疯了,想弄清楚什么是错的!
我的prefs.xml:
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android"
android:key="My_Shared_Preferences">
<PreferenceCategory
android:title="Your Location">
<PreferenceScreen
android:title="Find Location..."
android:key="location"
android:summary="Click here to read your location automatically"/>
<EditTextPreference
android:title="Latitude"
android:key="posLat" />
<EditTextPreference
android:title="Longtitude"
android:key="posLong" />
<EditTextPreference
android:title="Altitude"
android:key="posAlt" />
</PreferenceCategory>
</PreferenceScreen>
Run Code Online (Sandbox Code Playgroud)
或者,也许有更好的方法来存储应用程序的位置值?我真的不希望用户手动输入坐标,但我不想求助于保存和加载带有设置的文本文件,它看起来很粗糙.
Eri*_*vik 35
我遇到了同样的问题.我的解决方案是使用默认的共享首选项,而不是手动创建的具有给定名称的首选项.
从这里更改对SharedPreferences的引用:
SharedPreferences settings = getSharedPreferences(PREFS_NAME, MODE_PRIVATE);
Run Code Online (Sandbox Code Playgroud)
对此:
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(context);
Run Code Online (Sandbox Code Playgroud)
看看是否有任何区别.
这样做的新方法是
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = preferences.edit();
editor.putBoolean(PREF_NAME, YOUR_VALUE);
editor.commit();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
34366 次 |
| 最近记录: |