Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Problemas com SharedPreferences

Olá a todos!

Estou com um pequeno para criar uma sessão usando SharedPreferences.

public SharedPreferences settings;
public SharedPreferences.Editor editor;

No método OnCreate tenho eu instancio o settings e o editor

settings = getSharedPreferences("dados", Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = settings.edit();

Se eu usar o editor para colocar dados no settings direto no OnCreate consigo perfeitamente, mas se eu chamo o editor em uma outra classe, como estou fazendo, o aplicativo para e da o erro de NullPointerException.

public void setSession(JSONObject dados_usuario) {


        editor.putString("login", "logado");
        editor.commit();
}
1 resposta
solução!

Pelos seus trechos de código, no onCreate você está criando uma variável local chamada editor:

SharedPreferences.Editor editor = settings.edit();
`

Porém, no método setSession (que acredito estar na mesma classe que o seu método onCreate), você chama o editor que foi definido como atributo de classe:

public class SuaClasse {

    public SharedPreferences.Editor editor;

    public void setSession(JSONObject dados_usuario) {
        editor.putString("login", "logado");
        editor.commit();
    }
}

Como esse editor não é o mesmo que aquele inicializado no onCreate, você está tomando esse nullPointerException.

Para resolver isso troque:

SharedPreferences.Editor editor = settings.edit();

Por:

this.editor = settings.edit();

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software