作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用 Firebase 通过注册/注册保存用户信息。然后我遇到了障碍......
我正在为 onClick 使用 switch case,其中一个用于 registerpage() 方法,该方法采用按钮形式,另一个用于通过 进入下一个 Activity TextView 。但在 registerpage() 方法中,有一个 onClick DatePicker (用于选择 dateOfBirth) 。但是 DatePicker 的 onClick 不起作用。这是我的代码。谢谢。
注册页面.java
package com.example.sportsbuddyz;
import android.app.DatePickerDialog;
import android.app.ProgressDialog;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.media.tv.TvContract;
import android.nfc.Tag;
import android.support.annotation.NonNull;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.util.Patterns;
import android.view.View;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.OnFailureListener;
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;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
public class registerPage extends AppCompatActivity implements View.OnClickListener {
EditText jEmailEt, jPasswordEt;
Button jSignUpBtn;
ProgressDialog progressDialog;
private FirebaseAuth mAuth;
TextView jAccountExist;
EditText jName, jStudentID, jPhoneNumber, jAddress;
TextView jDOB, jAutoAge;
DatePickerDialog.OnDateSetListener mDateSetListener;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.registerpage);
jEmailEt = findViewById(R.id.emailEt);
jPasswordEt = findViewById(R.id.passwordEt);
//jSignUpBtn = findViewById(R.id.signupBtn);
mAuth = FirebaseAuth.getInstance();
//jAccountExist = findViewById(R.id.accountExist);
jName = findViewById(R.id.nameEt);
jStudentID = findViewById(R.id.studentIDEt);
jPhoneNumber = findViewById(R.id.phoneEt);
jAddress = findViewById(R.id.addressEt);
jDOB = findViewById(R.id.DOB);
jAutoAge = findViewById(R.id.AgeAuto);
ActionBar actionBar = getSupportActionBar();
actionBar.setTitle("Sign Up Account");
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setDisplayShowHomeEnabled(true);
progressDialog = new ProgressDialog(this);
progressDialog.setMessage("Progressing User...");
findViewById(R.id.signupBtn).setOnClickListener(this);
findViewById(R.id.accountExist).setOnClickListener(this);
findViewById(R.id.DOB).setOnClickListener(this);
}
@Override
public void onClick(View view){
switch (view.getId()){
//CASE 1 -- SignUp Button
case R.id.signupBtn:{
registerUser();
}
break;
//CASE 2 -- AccountExist(Text)
case R.id.accountExist: {
startActivity(new Intent(registerPage.this, loginPage.class));
finish();
}
break;
}
}
private void registerUser(){
progressDialog.show();
String email = jEmailEt.getText().toString().trim();
String password = jPasswordEt.getText().toString().trim();
String name = jName.getText().toString().trim();
String studentID = jStudentID.getText().toString().trim();
String phoneNo = jPhoneNumber.getText().toString().trim();
String address = jAddress.getText().toString().trim();
if (email.isEmpty()) {
jEmailEt.setError("Email must not be empty");
jEmailEt.setFocusable(true);
return;
}
if (!Patterns.EMAIL_ADDRESS.matcher(email).matches()) {
jEmailEt.setError("Invalid Email");
jEmailEt.setFocusable(true);
return;
}
if (password.isEmpty()) {
jPasswordEt.setError("Password must not be empty");
jPasswordEt.setFocusable(true);
return;
}
if (password.length() < 6) {
jPasswordEt.setError("Password must be at least 6 digit");
jPasswordEt.setFocusable(true);
return;
}
if (name.isEmpty()) {
jName.setError("Name must not be empty");
jName.setFocusable(true);
return;
}
if (studentID.isEmpty()) {
jStudentID.setError("Student ID must not be empty");
jStudentID.setFocusable(true);
return;
}
if (phoneNo.isEmpty()) {
jPhoneNumber.setError("Phone Number must not be empty");
jPhoneNumber.setFocusable(true);
return;
}
if (address.isEmpty()) {
jAddress.setError("Address must not be empty");
jAddress.setFocusable(true);
return;
}
jDOB.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH);
int day = calendar.get(Calendar.DAY_OF_MONTH);
DatePickerDialog datePickerDialog = new DatePickerDialog(registerPage.this, android.R.style.Theme_Holo_Dialog_MinWidth, mDateSetListener, year, month, day);
datePickerDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
datePickerDialog.show();
}
});
mDateSetListener = new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int month, int day) {
month = month + 1;
String dobDate = day + "/" + month + "/" + year;
jDOB.setText(dobDate);
jAutoAge.setText(getAge(year, month, day));
}
};
mAuth.createUserWithEmailAndPassword(email, password)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
// Sign in success, dismiss dialog & start register activity
progressDialog.dismiss();
//User userDetail = new User(email, name, studentID, phoneNo, address);
FirebaseUser user = mAuth.getCurrentUser();
//Get User email and UID from auth
String email = user.getEmail();
String uid = user.getUid();
String name = jName.getText().toString().trim();
String studentID = jStudentID.getText().toString().trim();
String phoneNo = jPhoneNumber.getText().toString().trim();
String address = jAddress.getText().toString().trim();
String DOB = jDOB.getText().toString().trim();
String Age = jAutoAge.getText().toString().trim();
//User is registered store user info in Firebase realtime database also
HashMap<Object,String> hashMap = new HashMap<>();
//Put Info in HashMap
hashMap.put("email",email);
hashMap.put("uid",uid);
hashMap.put("name", name);
hashMap.put("studentID", studentID);
hashMap.put("phone",phoneNo);
hashMap.put("address",address);
hashMap.put("Date Of Birth", DOB);
hashMap.put("Age",Age);
hashMap.put("image","");
hashMap.put("cover","");
//Firebase database instance
FirebaseDatabase database = FirebaseDatabase.getInstance();
//path to store user data named "Users"
DatabaseReference reference = database.getReference("Users");
//Put data within HashMap in database
reference.child(uid).setValue(hashMap);
Toast.makeText(registerPage.this, "Registered..\n"+user.getEmail(), Toast.LENGTH_SHORT).show();
startActivity(new Intent(registerPage.this, dashBoard.class));
finish();
} else {
// If sign in fails, display a message to the user.
progressDialog.dismiss();
Toast.makeText(registerPage.this, "Authentication failed.",
Toast.LENGTH_SHORT).show();
}
}
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
progressDialog.dismiss();
Toast.makeText(registerPage.this, ""+e.getMessage(), Toast.LENGTH_SHORT).show();
}
});
}
private String getAge(int year, int month, int day){
Calendar dob = Calendar.getInstance();
Calendar today = Calendar.getInstance();
dob.set(year, month, day);
int age = today.get(Calendar.YEAR) - dob.get(Calendar.YEAR);
if (today.get(Calendar.DAY_OF_YEAR) < dob.get(Calendar.DAY_OF_YEAR)){
age--;
}
Integer ageInt = new Integer(age);
String ageS = ageInt.toString();
return ageS;
}
@Override
public boolean onSupportNavigateUp(){
onBackPressed();
return super.onSupportNavigateUp();
}
@Override
public void onPointerCaptureChanged(boolean hasCapture) {
}
}
注册页面.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=".registerPage">
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<!--Confirm Sign Up Button-->
<Button
android:id="@+id/signupBtn"
style="@style/Widget.AppCompat.Button.Small"
android:layout_width="163dp"
android:layout_height="47dp"
android:layout_centerHorizontal="true"
android:background="@drawable/loginbutton"
android:text="Sign Up"
android:layout_below="@id/accountExist"
android:layout_margin="10dp"
android:textAllCaps="false"
android:textStyle="bold" />
<!--EmailAddress-->
<android.support.design.widget.TextInputLayout
android:id="@+id/emailTIL"
android:layout_width="325dp"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="120dp">
<EditText
android:id="@+id/emailEt"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Email Address"
android:inputType="textEmailAddress" />
</android.support.design.widget.TextInputLayout>
<!--Password-->
<android.support.design.widget.TextInputLayout
android:id="@+id/passwordTIL"
android:layout_width="325dp"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:layout_below="@+id/emailTIL"
app:passwordToggleEnabled="true">
<EditText
android:id="@+id/passwordEt"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Password"
android:inputType="textPassword" />
</android.support.design.widget.TextInputLayout>
<!--Name-->
<android.support.design.widget.TextInputLayout
android:id="@+id/nameTIL"
android:layout_width="325dp"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:layout_below="@+id/passwordTIL"
app:passwordToggleEnabled="true">
<EditText
android:id="@+id/nameEt"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Full Name"
android:inputType="textPersonName" />
</android.support.design.widget.TextInputLayout>
<!--Student ID-->
<android.support.design.widget.TextInputLayout
android:id="@+id/studentIDTIL"
android:layout_width="325dp"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:layout_below="@+id/nameTIL"
app:passwordToggleEnabled="true">
<EditText
android:id="@+id/studentIDEt"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Student ID" />
</android.support.design.widget.TextInputLayout>
<!--Phone Number-->
<android.support.design.widget.TextInputLayout
android:id="@+id/phoneTIL"
android:layout_width="325dp"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:layout_below="@+id/studentIDTIL"
app:passwordToggleEnabled="true">
<EditText
android:id="@+id/phoneEt"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Phone No."
android:inputType="phone" />
</android.support.design.widget.TextInputLayout>
<!--DOB-->
<TextView
android:id="@+id/DOB"
android:layout_width="150dp"
android:layout_height="50dp"
android:layout_marginBottom="140dp"
android:textAlignment="center"
android:hint="Date of Birth"
android:layout_below="@+id/addressTIL"
android:layout_marginTop="10dp"
android:layout_marginLeft="30dp"
android:textSize="20dp"/>
<!--Age-->
<TextView
android:id="@+id/AgeAuto"
android:layout_width="150dp"
android:layout_height="50dp"
android:layout_marginBottom="140dp"
android:textAlignment="center"
android:hint="Age"
android:layout_toRightOf="@+id/DOB"
android:layout_below="@id/addressTIL"
android:layout_margin="10dp"
android:layout_marginLeft="10dp"
android:textSize="20dp"/>
<!--Address-->
<android.support.design.widget.TextInputLayout
android:id="@+id/addressTIL"
android:layout_width="325dp"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:layout_below="@+id/phoneTIL"
app:passwordToggleEnabled="true">
<EditText
android:id="@+id/addressEt"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Address"
android:inputType="textShortMessage"/>
</android.support.design.widget.TextInputLayout>
<!--Already Register? Login now-->
<TextView
android:id="@+id/accountExist"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="140dp"
android:textAlignment="center"
android:text="Already have account? Login now"
android:layout_below="@+id/AgeAuto"
android:layout_margin="10dp"/>
</RelativeLayout>
</ScrollView>
</RelativeLayout>
最佳答案
您注册了两次点击监听器
xml中的onClick和java代码中的setOnClickListener
所以你必须删除其中一个..在你的情况下删除 onClickListener 并将你的代码放在 switch case 中
@Override
public void onClick(View view){
switch (view.getId()){
case R.id.DOB:
Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH);
int day = calendar.get(Calendar.DAY_OF_MONTH);
DatePickerDialog datePickerDialog = new DatePickerDialog(registerPage.this, android.R.style.Theme_Holo_Dialog_MinWidth, mDateSetListener, year, month, day);
datePickerDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
datePickerDialog.show();
break;
}
}
关于java - onClick Sign Up 方法包含 onClick Datepicker,如何使其工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61038781/
我是一名优秀的程序员,十分优秀!