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?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
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?
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.