1
resposta

como deixar um valor visivel em toda aplicaçao

Gostaria que ao logar na aplicação a variavel de email ficasse visível em toda aplicaçao e que pudesse ser lida por uma fragment ou activity. Como faria isso?

1 resposta

Olá Vanessa,

Uma forma de fazer isso é utlizando a Application para guardar a informação que deve estar disponível para todos os componentes da aplicação.

O primeiro passo é criar uma classe que estenda de Application. Nessa classe você vai colocar o atributo que você quer disponibilizar. Idealmente você vai querer disponibilizar também um getter para esse atributo:

public class MinhaAplicacao extends Application {
    private String email = "email@dominio.com.br";

    public String getEmail() {
        return email;
    }
}

O próximo passo é declarar que essa classe deve ser utilizada como Application. Fazemos isso no AndroidManifest.xml colocando o atributo name na tag application e referenciando a classe que acabamos de criar:

<manifest>

    <application
        android:name=".MinhaAplicacao"
        ...>

        ...

    </application>
</manifest>

Agora, sempre que você quiser utilizar esse atributo compartilhado pela Application, você só precisa recuperar uma referência para ela. Você pode fazer isso facilmente dentro de uma Activity invocando o método getApplication(). Cuidado porque o getApplication() vai devolver um objeto do tipo Application então precisamos fazer um casting para o tipo da nossa MinhaAplicacao:

public class UmaActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle bundle) {
        ...

        MinhaAplicacao app = (MinhaAplicacao) getApplication();
        String email = app.getEmail();
    }
}

Se precisar ter acesso a esses dados a partir de um Fragment, você só precisa recuperar a Activity com getActivity() e a partir da Activity invocar o método getApplication(). Aí você cai de volta no mesmo caso acima.