Как определить Intent внутри лямбда-выражения - PullRequest
0 голосов
/ 01 июня 2019

Я делаю приложение в Android Studio и хочу перейти от моего LoginActivity к моему MainActivity с Intent из OnCompleteListener().

, с которым я пытался:

firebaseAuth.signInWithEmailAndPassword(email, password).addOnCompleteListener(this, new OnCompleteListener() {
    @Override
    public void onComplete(@NonNull Task task) {
        if(task.isSuccessful()) {
            Intent mainActivity = new Intent(getApplicationContext(), MainActivity.class);
            startActivity(mainActivity);
            finish();
        }
    }
});

//and

firebaseAuth.signInWithEmailAndPassword(email, password).addOnCompleteListener(this, new OnCompleteListener() {
    @Override
    public void onComplete(@NonNull Task task) {
        if(task.isSuccessful()) {
            Intent mainActivity = new Intent(LoginActivity.this, MainActivity.class);
            startActivity(mainActivity);
            finish();
        }
    }
});

С обоими параметрами приложение скомпилировано правильно, но остановилось, когда был запущен метод signInWithEmailAndPassword().

Есть ли другой параметр, который я могу использовать?

1 Ответ

1 голос
/ 01 июня 2019

Intent следует создать так же, как и раньше.LoginActivity.this относится к этому экземпляру внешнего класса LoginActivity, где используется внутренний анонимный класс.Вероятно, он не предназначен для замены getApplicationContext().

. Поскольку вы пометили , вы хотите сократить реализацию анонимного класса до лямбда-выражения.:

firebaseAuth.signInWithEmailAndPassword(email, password)
    .addOnCompleteListener(this, task -> {
         if (task.isSuccessful()) {
             Intent mainActivity = new Intent(getApplicationContext(), MainActivity.class);
             startActivity(mainActivity);
             finish();
         }
    });

Помните, что экземпляр Intent не связан с лямбда-выражением.Ключевая часть сокращает:

new OnCompleteListener() {
    @Override
    public void onComplete(@NonNull Task task) { ... }
}

... до ...

task -> { ... }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...