我已经尝试了一切,当我运行的应用程序,它运行,但注册活动崩溃,并回到欢迎屏幕.告诉我什么是问题,是否我做错了什么或它的任何其他问题.这是注册活动代码im使用firebase
package com.example.chatzone;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.android.material.textfield.TextInputEditText;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
public class SignUp extends AppCompatActivity {
TextInputEditText UserName;
TextInputEditText Email;
TextInputEditText Pass01;
TextInputEditText conPass01;
Button signUp;
String emailPattern = "[a-zA-Z0-9._-]+@[a-z]+\\.+[a-z]+";
FirebaseAuth mAuth;
FirebaseUser mUser;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sign_up);
UserName=findViewById(R.id.Username);
Email=findViewById(R.id.Email);
Pass01=findViewById(R.id.Password01);
conPass01=findViewById(R.id.Password02);
signUp=findViewById(R.id.Sign_Up02);
mAuth=FirebaseAuth.getInstance();
mUser=mAuth.getCurrentUser();
signUp.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
creatUser();
}
private void creatUser() {
Intent i = getIntent();
String BD = i.getStringExtra(userInfo.t1);
String FN = i.getStringExtra(userInfo.t2);
String LN = i.getStringExtra(userInfo.t3);
String PN = i.getStringExtra(userInfo.t4);
String email=Email.getText().toString();
String UN=UserName.getText().toString();
String Pass=Pass01.getText().toString();
String conPass=conPass01.getText().toString();
if(!email.matches(emailPattern)){
Toast.makeText(SignUp.this,"Enter valid Email Address",Toast.LENGTH_SHORT).show();
}else if(Pass == conPass)
{
Toast.makeText(SignUp.this,"Password and Confirm Password does not match",Toast.LENGTH_SHORT).show();
}else if(Pass.length()<6){
Toast.makeText(SignUp.this,"Password length should be Atleast 6 digit long",Toast.LENGTH_SHORT).show();
}else if(TextUtils.isEmpty(email) || TextUtils.isEmpty(UN) || TextUtils.isEmpty(Pass) || TextUtils.isEmpty(conPass))
{
Toast.makeText(SignUp.this,"Input Field can't be Empty",Toast.LENGTH_SHORT).show();
}else
{
mAuth.createUserWithEmailAndPassword(email,Pass).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if(task.isSuccessful())
{
Toast.makeText(SignUp.this,"Registration Successful",Toast.LENGTH_SHORT).show();
nextAct();
}
else{
Toast.makeText(SignUp.this,""+task.getException(),Toast.LENGTH_SHORT).show();
}
}
});
}
}
private void nextAct() {
Intent in = new Intent(SignUp.this,MainActivity.class);
startActivity(in);
}
});
}
}
这是错误
FATAL EXCEPTION: main
Process: com.example.chatzone, PID: 30802
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.chatzone/com.example.chatzone.SignUp}: java.lang.ClassCastException: com.google.android.material.textfield.TextInputLayout cannot be cast to com.google.android.material.textfield.TextInputEditText
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3754)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3912)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2319)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:239)
at android.app.ActivityThread.main(ActivityThread.java:8212)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:626)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1016)
Caused by: java.lang.ClassCastException: com.google.android.material.textfield.TextInputLayout cannot be cast to com.google.android.material.textfield.TextInputEditText
at com.example.chatzone.SignUp.onCreate(SignUp.java:35)
at android.app.Activity.performCreate(Activity.java:8119)
at android.app.Activity.performCreate(Activity.java:8103)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1359)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3727)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3912)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2319)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:239)
at android.app.ActivityThread.main(ActivityThread.java:8212)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:626)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1016)
logcat显示这种类型的错误请帮助我解决这个问题
XML代码:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".SignUp">
<TextView
android:id="@+id/step2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="50dp"
android:fontFamily="@font/knewave01"
android:text="Step 02: "
android:textColor="#808080"
android:textSize="50dp"
android:textStyle="bold" />
<TextView
android:id="@+id/Usertxt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/step2"
android:layout_marginStart="15dp"
android:layout_marginTop="10dp"
android:fontFamily="@font/knewave01"
android:text="User Info: "
android:textColor="@color/CZColor"
android:textSize="40sp"
android:textStyle="bold" />
<TextView
android:id="@+id/UserNameText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/Usertxt"
android:layout_marginStart="15dp"
android:layout_marginTop="10dp"
android:text="Username:"
android:textColor="@color/black"
android:textSize="20dp"
android:textStyle="bold"></TextView>
<com.google.android.material.textfield.TextInputLayout
android:layout_marginStart="15dp"
android:layout_width="360dp"
android:layout_height="wrap_content"
android:id="@+id/Username"
android:hint="Username"
app:startIconDrawable="@drawable/user"
app:endIconMode="clear_text"
app:endIconTint="#808080"
app:boxStrokeColor="@color/CZColor"
android:layout_below="@id/UserNameText">
<com.google.android.material.textfield.TextInputEditText
android:layout_width="match_parent"
android:layout_height="match_parent"
android:textColor="@color/CZColor">
</com.google.android.material.textfield.TextInputEditText>
</com.google.android.material.textfield.TextInputLayout>
<TextView
android:id="@+id/EmailText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/Username"
android:layout_marginStart="15dp"
android:layout_marginTop="10dp"
android:text="Email:"
android:textColor="@color/black"
android:textSize="20dp"
android:textStyle="bold"></TextView>
<com.google.android.material.textfield.TextInputLayout
android:layout_marginStart="15dp"
android:layout_width="360dp"
android:layout_height="wrap_content"
android:hint="Email"
android:id="@+id/Email"
app:startIconDrawable="@drawable/email"
app:endIconMode="clear_text"
app:endIconTint="#808080"
app:boxStrokeColor="@color/CZColor"
android:layout_below="@id/EmailText">
<com.google.android.material.textfield.TextInputEditText
android:layout_width="match_parent"
android:layout_height="match_parent"
android:textColor="@color/CZColor"
android:inputType="textEmailAddress">
</com.google.android.material.textfield.TextInputEditText>
</com.google.android.material.textfield.TextInputLayout>
<TextView
android:id="@+id/PasswordText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/Email"
android:layout_marginStart="15dp"
android:layout_marginTop="10dp"
android:text="Password:"
android:textColor="@color/black"
android:textSize="20dp"
android:textStyle="bold"></TextView>
<com.google.android.material.textfield.TextInputLayout
android:layout_marginStart="15dp"
android:layout_width="360dp"
android:layout_height="wrap_content"
android:hint="Password"
android:id="@+id/Password01"
app:startIconDrawable="@drawable/key"
app:endIconMode="password_toggle"
app:endIconTint="#808080"
app:boxStrokeColor="@color/CZColor"
android:layout_below="@id/PasswordText">
<com.google.android.material.textfield.TextInputEditText
android:layout_width="match_parent"
android:layout_height="match_parent"
android:textColor="@color/CZColor"
android:inputType="textPassword">
</com.google.android.material.textfield.TextInputEditText>
</com.google.android.material.textfield.TextInputLayout>
<TextView
android:id="@+id/PasswordText01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/Password01"
android:layout_marginStart="15dp"
android:layout_marginTop="10dp"
android:text="Confirm Password:"
android:textColor="@color/black"
android:textSize="20dp"
android:textStyle="bold"></TextView>
<com.google.android.material.textfield.TextInputLayout
android:layout_marginStart="15dp"
android:layout_width="360dp"
android:layout_height="wrap_content"
android:hint="Confirm Password"
android:id="@+id/Password02"
app:startIconDrawable="@drawable/key"
app:endIconMode="clear_text"
app:endIconTint="#808080"
app:boxStrokeColor="@color/CZColor"
android:layout_below="@id/PasswordText01">
<com.google.android.material.textfield.TextInputEditText
android:layout_width="match_parent"
android:layout_height="match_parent"
android:textColor="@color/CZColor">
</com.google.android.material.textfield.TextInputEditText>
</com.google.android.material.textfield.TextInputLayout>
<Button
android:id="@+id/Sign_Up02"
android:layout_width="170dp"
android:layout_height="60dp"
android:layout_centerHorizontal="true"
android:layout_below="@id/Password02"
android:layout_marginTop="15dp"
android:text="SIGN UP"
android:textSize="20dp"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Already have account ?"
android:textSize="22dp"
android:textColor="#808080"
android:textStyle="bold"
android:layout_marginStart="50dp"
android:layout_marginTop="10dp"
android:layout_below="@+id/Sign_Up02"
></TextView>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Sign In"
android:textSize="23dp"
android:textColor="@color/CZColor"
android:layout_marginStart="285dp"
android:layout_marginTop="10dp"
android:textStyle="bold"
android:layout_below="@+id/Sign_Up02"
></TextView>
<ImageButton
android:id="@+id/imageButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="5dp"
android:layout_marginTop="5dp"
app:srcCompat="@drawable/back"
android:background="@color/white"
/>
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/progressBar01"
android:indeterminate="true"
android:layout_centerInParent="true"
android:visibility="gone"></ProgressBar>
</RelativeLayout>
1条答案
按热度按时间k10s72fa1#
您可以轻松检查此日志中的问题原因:
您为变量Email声明了错误的视图。请尝试使用TextInputLayout声明它。
还有一件事,你不应该像“Email,Username,Pass01”那样声明变量名。这会导致你的项目更难维护。查找命名约定以了解更多信息