[英]Can't import SharedPreferences
替換SharedPreferences文件后,我無法加載新的SharedPreferences文件。 重新安裝應用程序后即可正常工作。 重新啟動應用程序后,沒有任何變化。
這是導入/導出類:
public class Prefs {
private String PrefsDir = "/data/%packagename%/shared_prefs/";
private String ExportDir = "/";
private SharedPreferences _sharedPrefs;
private SharedPreferences.Editor _prefsEditor;
private Context context;
Prefs(Context context, String form) {
this.ExportDir = Environment.getExternalStorageDirectory().getPath() + ExportDir;
this.PrefsDir = Environment.getDataDirectory().getPath() + PrefsDir;
_sharedPrefs = context.getSharedPreferences(form, Activity.MODE_PRIVATE);
_prefsEditor = _sharedPrefs.edit();
}
private boolean copyfile(String srFile, String dtFile){
Popup.log("srFile = "+srFile);
Popup.log("dtFile = "+dtFile);
try{
File f1 = new File(srFile);
File f2 = new File(dtFile);
InputStream in = new FileInputStream(f1);
OutputStream out = new FileOutputStream(f2);
byte[] buf = new byte[1024];
int len;
while ((len = in.read(buf)) > 0){
out.write(buf, 0, len);
}
in.close();
out.close();
} catch(FileNotFoundException ex) {
Popup.popup(context, "File not found");
Popup.log(ex.getMessage());
return false;
} catch(IOException e) {
Popup.popup(context, "IO Error");
return false;
}
return true;
}
boolean Export(String form) {
return copyfile(PrefsDir+form+".xml", ExportDir+form+".xml");
}
boolean Import(String form) {
return copyfile(ExportDir+form+".xml", PrefsDir+form+".xml");
}
}
對不起我的英語
我的實現的第一部分包括一些聲明,這些聲明定義了用於檢索“共享首選項”的鍵以及可以將它們存儲在其中的變量。 第一個例程是初始化共享首選項(為了加載共享首選項,您需要在代碼中保存值,因此需要一些代碼在代碼中初始化這些值)。 第二個例程是保存共享首選項。 第三個例程是加載共享首選項。
這是關鍵定義部分
private SharedPreferences sharedPreferences;
public final static String MARV_INIT = "MARV_INIT";
public final static String MARV_LAT = "MARV_LATITUDE";
public final static String MARV_LON = "MARV_LONGITUDE";
public final static String MARV_ZOOM = "MARV_ZOOM";
public final static String MARV_PDFL = "MARV_PDFL";
public final static String MARV_PRON = "MARV_PRON";
public final static String MARV_LTRD = "MARV_LTRD";
這是3個例程。
// Shared Preferences and other data loading routines for this activity
private void initSharedPreferences() {
Log.i(TAG, "Initializing shared preferences ...");
Editor editor = sharedPreferences.edit();
editor.putInt(MARV_INIT, 1);
editor.putString(MARV_LAT, ((Double) SG_LATITUDE).toString());
editor.putString(MARV_LON, ((Double) SG_LONGITUDE).toString());
editor.putFloat(MARV_ZOOM, (float) DEFAULT_ZOOM);
editor.putString(MARV_PDFL, getString(R.string.default_poi_list));
editor.putBoolean(MARV_PRON, true);
editor.putFloat(MARV_LTRD, (float) LocationAlertService.DEFAULT_RADIUS);
editor.commit();
}
private void saveSharedPreferences() {
// Update global variables first
updateCameraProperties();
// Now save global variables into shared preferences
Editor editor = sharedPreferences.edit();
editor.putString(MARV_LAT,
((Double) lastCameraPosition.latitude).toString());
editor.putString(MARV_LON,
((Double) lastCameraPosition.longitude).toString());
editor.putFloat(MARV_ZOOM, lastCameraZoom);
editor.putString(MARV_PDFL, poiDocFileListUrl);
editor.putBoolean(MARV_PRON, proximityAlertsOn);
editor.putFloat(MARV_LTRD, lastRadiusUsed);
editor.commit();
}
private void loadSharedPreferences() {
lastCameraPosition = new LatLng(Double.parseDouble(sharedPreferences
.getString(MARV_LAT, ((Double) SG_LATITUDE).toString())),
Double.parseDouble(sharedPreferences.getString(MARV_LON,
((Double) SG_LONGITUDE).toString())));
lastCameraZoom = sharedPreferences.getFloat(MARV_ZOOM, DEFAULT_ZOOM);
poiDocFileListUrl = sharedPreferences.getString(MARV_PDFL,
getString(R.string.default_poi_list));
proximityAlertsOn = sharedPreferences.getBoolean(MARV_PRON, true);
lastRadiusUsed = sharedPreferences.getFloat(MARV_LTRD, LocationAlertService.DEFAULT_RADIUS);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.