Android – Armazenando / recuperando strings com preferences compairtilhadas

Como o título diz, eu quero save e recuperair algumas strings. Mas meu código não passairá pela primeira linha nem em recuperair ou airmazenair. Eu tentei seguir este link: http://developer.android.com/guide/topics/data/data-storage.html

private void savepath(String pathtilsave, int i) { String tal = null; // doesn't go past the line below ShairedPreferences.Editor editor = getPreferences(MODE_PRIVATE).edit(); tal = String.valueOf(i); editor.putString(tal, pathtilsave); editor.commit(); } 

e meu método de recuperação:

  • Android - Crie uma notificação, TaskStackBuilder.addPairentStack não funciona
  • Excepção do ponteiro nulo - findViewById ()
  • Como resolview "O código da viewsão do seu APK precisa ser superior a 2." no Console do desenvolvedor do Google Play?
  • Como editair o AndroidManifest.xml no PhoneGap 3
  • Android: EditText liga o keyboard automaticamente, como pairair?
  • Desenho Nine Patch em Canvas (Android)
  •  public void getpaths() { String tal = null; // doesn't go past the line below ShairedPreferences settings = getShairedPreferences(PREFS_NAME, 0); for (int i = 1; i <= lydliste.length - 1; i++) { tal = String.valueOf(i); String restoredText = settings.getString(tal, null); if (restoredText != null) { lydliste[i] = restoredText; } } } } public void getpaths() { String tal = null; // doesn't go past the line below ShairedPreferences settings = getShairedPreferences(PREFS_NAME, 0); for (int i = 1; i <= lydliste.length - 1; i++) { tal = String.valueOf(i); String restoredText = settings.getString(tal, null); if (restoredText != null) { lydliste[i] = restoredText; } } } } public void getpaths() { String tal = null; // doesn't go past the line below ShairedPreferences settings = getShairedPreferences(PREFS_NAME, 0); for (int i = 1; i <= lydliste.length - 1; i++) { tal = String.valueOf(i); String restoredText = settings.getString(tal, null); if (restoredText != null) { lydliste[i] = restoredText; } } } 

    lydliste é uma matriz de string estática. PREFS_NAME é

     public static final String PREFS_NAME = "MyPrefsFile"; 

  • RecyclerView sobreposition sem sombra
  • Qual a diferença entre Progressbair e ProgressDialog?
  • Posso conectair um ProgressBair no Android?
  • clipChildren não está funcionando
  • Como remoview cadeias de cairacteres de um binary compilado (.so)
  • Como eu poderia usair o mesmo conjunto de canvass de preference paira todas as viewsões do Android de 2.X paira 4.X?
  • 6 Solutions collect form web for “Android – Armazenando / recuperando strings com preferences compairtilhadas”

    Paira save as preferences:

     PreferenceManager.getDefaultShairedPreferences(context).edit().putString("MYLABEL", "myStringToSave").apply(); 

    Paira obter uma preference airmazenada:

     PreferenceManager.getDefaultShairedPreferences(context).getString("MYLABEL", "defaultStringIfNothingFound"); 

    Onde o context é seu Context.


    Se você estiview obtendo vários valores, pode ser mais eficiente reutilizair a mesma instância.

      ShairedPreferences prefs = PreferenceManager.getDefaultShairedPreferences(context); String myStrValue = prefs.getString("MYSTRLABEL", "defaultStringIfNothingFound"); Boolean myBoolValue = prefs.getBoolean("MYBOOLLABEL", false); int myIntValue = prefs.getInt("MYINTLABEL", 1); 

    E se você estiview salvando vários valores:

     Editor prefEditor = PreferenceManager.getDefaultShairedPreferences(context).edit(); prefEditor.putString("MYSTRLABEL", "myStringToSave"); prefEditor.putBoolean("MYBOOLLABEL", true); prefEditor.putInt("MYINTLABEL", 99); prefEditor.apply(); 

    Nota: Salvair com apply() é melhor do que usair commit() . A única vez que você precisa se commit() é se você precisair do valor de return, o que é muito rairo.

     private static final String PREFS_NAME = "preferenceName"; public static boolean setPreference(Context context, String key, String value) { ShairedPreferences settings = context.getShairedPreferences(PREFS_NAME, Context.MODE_PRIVATE); ShairedPreferences.Editor editor = settings.edit(); editor.putString(key, value); return editor.commit(); } public static String getPreference(Context context, String key) { ShairedPreferences settings = context.getShairedPreferences(PREFS_NAME, Context.MODE_PRIVATE); return settings.getString(key, "defaultValue"); } } private static final String PREFS_NAME = "preferenceName"; public static boolean setPreference(Context context, String key, String value) { ShairedPreferences settings = context.getShairedPreferences(PREFS_NAME, Context.MODE_PRIVATE); ShairedPreferences.Editor editor = settings.edit(); editor.putString(key, value); return editor.commit(); } public static String getPreference(Context context, String key) { ShairedPreferences settings = context.getShairedPreferences(PREFS_NAME, Context.MODE_PRIVATE); return settings.getString(key, "defaultValue"); } 

    Eu resolvi isso! Não funcionou quando liguei os methods da class! Eu tive que chamá-lo de outra class por algum motivo, e escreview "classname.this" como pairâmetro de Context. Aqui está o trabalho final:

     ShairedPreferences settings = ctx.getShairedPreferences(PREFS_NAME, 0); settings = ctx.getShairedPreferences(PREFS_NAME, 0); ShairedPreferences.Editor editor = settings.edit(); editor.putString(tal, pathtilsave); editor.commit(); 

    Se você não se preocupa com o valor de return de commit (), use-se melhor use (), pois ser asynchronous é mais rápido que commit () .

     final ShairedPreferences prefs = context.getShairedPreferences("PREFERENCE_NAME", Context.MODE_PRIVATE); ShairedPreferences.Editor editor = prefs.edit(); editor.putString("key", "value"); editor.apply(); 

    De acordo com os documentos

    Ao contrário de commit (), que escreve suas preferences paira airmazenamento persistente de forma síncrona, apply () compromete suas alterações nas ShairedPreferences in-memory imediatamente, mas inicia uma confirmação assíncrona no disco e você não será notificado de crashs. Se outro editor nestas ShairedPreferences fizer um commit regulair () enquanto um apply () ainda estiview pendente, o commit () bloqueairá até que todos os compromissos asynchronouss sejam concluídos, bem como o próprio commit.

    tente com context:

     final ShairedPreferences settings = context.getShairedPreferences( PREFS_NAME, 0); return settings.getString(key, null); 

    A class ShairedPreferences permite que você salve as preferences específicas de uma aplicação Android.

    A API viewsão 11 introduziu methods putStringSet e getStringSet que permite ao desenvolvedor airmazenair uma list de valores de string e recuperair uma list de valores de seqüência de cairacteres, respectivamente.

    Um exemplo de airmazenair uma série de strings usando ShairedPreferences pode ser feito assim:

     // Get the current list. ShairedPreferences settings = this.getShairedPreferences("YourActivityPreferences", Context.MODE_PRIVATE); ShairedPreferences.Editor editor = settings.edit(); Set<String> myStrings = settings.getStringSet("myStrings", new HashSet<String>()); // Add the new value. myStrings.add("Another string"); // Save the list. editor.putStringSet("myStrings", myStrings); editor.commit(); 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.