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?
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.