-
Notifications
You must be signed in to change notification settings - Fork 14
Preferências
Uma vez que você entra no eQuizmo e digita seu Nome e E-mail, você não precisa mais fazer isso. Percebeu? É útil, pois não lhe força a digitar isso toda hora, afinal de contas, é SEU celular. :) E como fazemos isso? Precisamos guardar estas informações do usuário em algum lugar, certo? Para isto, utilizamos um recurso chamado SharedPreferences do Android. Vamos ver nesta seção como o usamos.
Temos três lugares onde usamos o SharedPreferences. No primeiro, você sequer sabe que está usando! O Android lhe dá algumas facilidades muito bacanas para você criar telas de Preferências igualzinhas àquelas que você usa para configurar seu próprio aparelho. Como exemplo, veja as classes PreferenciasActivity.java, PreferenciasFragment.java. Também veja o arquivo preferencias.xml.
Confuso? Vamos explicar. O arquivo preferencias.xml define como será a tela de preferências. No nosso caso, estamos informando que teremos dois campos apenas. Um campo de texto e um switch. A classe PreferenciasFragment apenas se associa a este arquivo XML. Já a classe PreferenciasActivity contém a PreferenciasFragment. E é só isso? Sim. Faça um teste. Entre na tela e saia. Depois volte. O que você marcou continuará lá.
Com a tela que citamos acima, o usuário pode informar suas preferências. Contudo, como usamos estes dados informados por ele em nosso código? É bem simples. Temos um exemplo na classe User.java, mais especificamente no método loadLastUser().
Observe que estamos obtendo uma referência para a classe SharedPreferences. Depois, basta usar os métodos getString(), getInt() e por aí vai. Tem um método para cada tipo de dado que pode ser armazenado.
public static boolean loadLastUser() {
boolean result = false;
final Context context = Beans.getBean(Context.class);
final SharedPreferences prefs = context.getSharedPreferences("QuizPreferences", 0);
final String email = prefs.getString("email", null);
final String name = prefs.getString("name", null);
if (email != null && name != null) {
result = true;
User.setLoggedUser(new User(name, email));
}
return result;
}