при создании приложения Android я столкнулся со следующей проблемой:
Мой MainActivity выглядит следующим образом:
...
private String token;
@Override
protected void onCreate(Bundle savedInstanceState) {
...
tokenSetter();
}
private void tokenSetter() {
FirebaseInstanceId.getInstance().getInstanceId()
.addOnCompleteListener(task -> {
if (!task.isSuccessful()) {
Log.w("TRAZENITOKEN", "getInstanceId failed", task.getException());
return;
}
// Get new Instance ID token
String token = Objects.requireNonNull(task.getResult()).getToken();
setToken(token);
Log.d("TRAZENITOKEN", "onGetToken: " + token);
// Log and toast
// Log.d("TRAZENITOKEN", "onComplete: " + token);
});
}
public String getToken() {
return token;
}
public void setToken(String token) {
this.token = token;
}
Я знаю, что значение токена устанавливается как в другом методе внутри этого класса MainActivity, когда я вызываю getToken (), я получаю значение.
Однако, когда я пытаюсь вызвать getToken из другого Activity, что-то вроде этого:
...
button.setOnClickListener(view -> {
FirebaseActions firebaseActions = new FirebaseActions();
MainActivity mainActivity = new MainActivity();
//firebaseActions.setUserNameOnToken(editText.getText().toString());
if(mainActivity.getToken() != null) editText.setText(mainActivity.getToken());
else editText.setText("Skafiskafnjak");
});
(я выбрал метод editText.setText для целей отладки, я собираюсь использовать его с комментариями) Приведенный выше фрагмент кода всегда переходит к остальной части, так как getToken имеет значение null. Почему он возвращает нуль в этом классе, если он возвращает значение в своем собственном классе? Может быть, потому, что я сделал MainActivity mainActivity = new MainActivity ();
Ответ был бы признателен. Заранее спасибо!