添加电子邮件和密码验证时应用程序崩溃[关闭]
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了添加电子邮件和密码验证时应用程序崩溃[关闭]相关的知识,希望对你有一定的参考价值。
当我尝试使用电子邮件和密码进行验证时,应用程序崩溃了。
activity_main.xml中
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:fitsSystemWindows="true">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingLeft="24dp"
android:paddingTop="56dp"
android:paddingRight="24dp">
<EditText
android:id="@+id/input_email"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Email"
android:inputType="textEmailAddress" />
<EditText
android:id="@+id/input_password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Password"
android:inputType="textPassword" />
<android.support.v7.widget.AppCompatButton
android:id="@+id/btn_login"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:layout_marginBottom="24dp"
android:padding="12dp"
android:onClick="onRegister"
android:text="Login" />
</LinearLayout>
</ScrollView>
main_activity.Java
在这里我试图通过电子邮件和密码验证添加用户,但每当我添加此firebase代码应用程序崩溃。
package com.example.login;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
public class MainActivity extends AppCompatActivity {
EditText email = findViewById(R.id.input_email);
EditText pass = findViewById(R.id.input_password);
private FirebaseAuth mAuth;
@Override
protected void onStart() {
super.onStart();
FirebaseUser currentUser = mAuth.getCurrentUser();
Toast.makeText(MainActivity.this, "already registered"+currentUser,Toast.LENGTH_SHORT).show();
Log.i("already","already in");
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mAuth = FirebaseAuth.getInstance();
}
public void onRegister(View view){
String myemail = email.getText().toString();
String mypass = pass.getText().toString();
mAuth.createUserWithEmailAndPassword(myemail, mypass)
.addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
// Sign in success, update UI with the signed-in user's information
Toast.makeText(MainActivity.this,"successfully registered",Toast.LENGTH_SHORT).show();
} else {
// If sign in fails, display a message to the user.
Toast.makeText(MainActivity.this, "Authentication failed.",
Toast.LENGTH_SHORT).show();
}
// ...
}
});
}
}
APP-gradle这个
它也在gradle文件中给出了一些错误,比如com.android.support应该有相同的verison。
*
apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services'
android {
compileSdkVersion 28
defaultConfig {
applicationId "com.example.login"
minSdkVersion 22
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
implementation 'com.google.firebase:firebase-auth:16.2.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}
答案
在你的MainActivity
你已经初始化你的view
错误,声明并初始化你的EditText
s字段如下
public class MainActivity extends AppCompatActivity {
private EditText email;
private EditText pass;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
email = findViewById(R.id.input_email);
pass = findViewById(R.id.input_password);
}
}
总是记得在Activity
方法调用之后将视图附加到setContentView(R.layout.activity_main);
之后初始化视图字段,这会附加你的视图,否则你会得到null
指针异常,就像我猜你现在得到的那样
以上是关于添加电子邮件和密码验证时应用程序崩溃[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
如何为经过验证的行为电子邮件和丢失密码计时器编写 cron 作业脚本? [关闭]