qual é a Melhor maneira para uso compartilhado de preferências entre as atividades

StackOverflow https://stackoverflow.com/questions/4051875

  •  27-09-2019
  •  | 
  •  

Pergunta

Eu tenho uma preferência de usuário no meu aplicativo, que é usado por diferentes actividades.Gostaria de saber a melhor maneira de utilizar as preferências entre diferentes atividades no meu App.

Eu tive esta idéia de criar um shared preferência objeto da atividade principal e de lá enviar intenções para as diferentes actividades para tomar ações.Teria que trabalhar...?

Ou apenas continuar a chamar getsharedpreferences() de cada atividade,..?

Obrigado.

Foi útil?

Solução

O envio de preferências compartilhadas através das intenções parece supercomplicado. Você pode envolver as preferências compartilhadas com algo como o abaixo e chamar os métodos diretamente de suas atividades:

public class Prefs {
    private static String MY_STRING_PREF = "mystringpref";
    private static String MY_INT_PREF = "myintpref";

    private static SharedPreferences getPrefs(Context context) {
        return context.getSharedPreferences("myprefs", 0);
    }

    public static String getMyStringPref(Context context) {
        return getPrefs(context).getString(MY_STRING_PREF, "default");
    }

    public static int getMyIntPref(Context context) {
        return getPrefs(context).getInt(MY_INT_PREF, 42);
    }

    public static void setMyStringPref(Context context, String value) {
        // perform validation etc..
        getPrefs(context).edit().putString(MY_STRING_PREF, value).commit();
    }

    public static void setMyIntPref(Context context, int value) {
        // perform validation etc..
        getPrefs(context).edit().putInt(MY_INT_PREF, value).commit();
    }
}

Outras dicas

Você pode usar este caminho e declarar mesmas variáveis com o mesmo nome em todas as atividades onde o pretende utilizar.

  public static final String PREFS_NAME = "MyPrefsFile";
  static SharedPreferences settings;
  SharedPreferences.Editor editor;
  int wordCount;

 public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    settings = getSharedPreferences(PREFS_NAME, 0);
    editor = settings.edit();

    wordCount = settings.getInt("wordCount", 4); 

  }

Aqui, inicialmente, wordCount vai dar 4;E quando você editar wordCount e deseja armazenar novamente

  editor.putInt("wordCount", 6);
  editor.commit();

Você tem que declarar este mesmas variáveis em atividades de onde você quer para uso compartilhado de preferências.E é melhor você chamar getSharedPreferences em cada atividade.

Eu não acho que passando esse a preferência na intenção irá funcionar.

É claro que você pode usar preferências compartilhadas em seus aplicativos.

Se você tiver mais do que um tipo simples do que string ou int, poderá usar um singleton ou estender a classe de aplicativo que será acessível por todas as atividades do seu aplicativo. => Sem acesso ao disco aqui. Simplesmente mantido na memória.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top