Java 如何在Lambda表达式中定义意图

Java 如何在Lambda表达式中定义意图,java,android,android-intent,lambda,java-8,Java,Android,Android Intent,Lambda,Java 8,我正在Android Studio中制作一个应用程序,我想从我的LoginActivity转到我的MainActivity,并在OnCompleteListener()中具有意图 我试过: firebaseAuth.signiWithEmailandPassword(电子邮件,密码)。addOnCompleteListener(这是新的OnCompleteListener(){ @凌驾 未完成的公共void(@NonNull任务){ if(task.issusccessful()){ Inten

我正在Android Studio中制作一个应用程序,我想从我的
LoginActivity
转到我的
MainActivity
,并在
OnCompleteListener()中具有
意图

我试过:

firebaseAuth.signiWithEmailandPassword(电子邮件,密码)。addOnCompleteListener(这是新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
Intent mainActivity=新的Intent(getApplicationContext(),mainActivity.class);
星触觉(主要活动);
完成();
}
}
});
//及
firebaseAuth.signInWithEmailAndPassword(电子邮件,密码).addOnCompleteListener(这是新的OnCompleteListener()){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
Intent mainActivity=新Intent(LoginActivity.this,mainActivity.class);
星触觉(主要活动);
完成();
}
}
});
使用这两个参数,应用程序可以正确编译,但在触发
signInWithEmailAndPassword()
方法时停止


是否有任何其他参数可以使用?

Intent
应以与以前相同的方式创建。
LoginActivity。此
引用外部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 -> { ... }

在结尾的第三行,我写了“compliated”而不是“compiled”,很抱歉造成混淆。您可以随时返回并编辑您的OP,您不需要添加注释来表示抱歉。我们每天都会打字。这是生活的一部分。你说应用程序停止是什么意思?它坠毁了吗?你能分享logcat吗?Lambda只是让你的代码看起来更小更干净,但它不会修复崩溃。