Java 如何在Lambda表达式中定义意图
我正在Android Studio中制作一个应用程序,我想从我的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
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只是让你的代码看起来更小更干净,但它不会修复崩溃。