gpt4 book ai didi

java - 如何在 Lambda 表达式中定义 Intent

转载 作者:行者123 更新时间:2023-12-02 09:49:30 25 4
gpt4 key购买 nike

我正在 Android Studio 中制作一个应用程序,我想使用 Intent 从我的 LoginActivity 转到我的 MainActivity 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() 方法时停止。

还有其他我可以使用的参数吗?

最佳答案

Intent 应以与以前相同的方式创建。 LoginActivity.this 引用外部 LoginActivity 类的实例,其中使用了内部匿名类。它可能并不意味着取代 getApplicationContext()

就您标记的 而言,您的愿望是将匿名类实现缩短为 lambda 表达式,在这里:

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

请记住,Intent 实例化与 lambda 表达式无关。关键部分是缩短:

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

...到...

task -> { ... }

关于java - 如何在 Lambda 表达式中定义 Intent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56409929/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com