onClick Sign Up method includes onClick Datepicker, how to make it work?

huangapple go评论97阅读模式
英文:

onClick Sign Up method includes onClick Datepicker, how to make it work?

问题

  1. package com.example.sportsbuddyz;
  2. import android.app.DatePickerDialog;
  3. import android.app.ProgressDialog;
  4. import android.content.Intent;
  5. import android.graphics.Color;
  6. import android.graphics.drawable.ColorDrawable;
  7. import android.support.annotation.NonNull;
  8. import android.support.v7.app.ActionBar;
  9. import android.support.v7.app.AppCompatActivity;
  10. import android.os.Bundle;
  11. import android.util.Patterns;
  12. import android.view.View;
  13. import android.widget.Button;
  14. import android.widget.DatePicker;
  15. import android.widget.EditText;
  16. import android.widget.TextView;
  17. import android.widget.Toast;
  18. import com.google.android.gms.tasks.OnCompleteListener;
  19. import com.google.android.gms.tasks.OnFailureListener;
  20. import com.google.android.gms.tasks.Task;
  21. import com.google.firebase.auth.AuthResult;
  22. import com.google.firebase.auth.FirebaseAuth;
  23. import com.google.firebase.auth.FirebaseUser;
  24. import com.google.firebase.database.DatabaseReference;
  25. import com.google.firebase.database.FirebaseDatabase;
  26. import java.util.Calendar;
  27. import java.util.HashMap;
  28. public class registerPage extends AppCompatActivity implements View.OnClickListener {
  29. EditText jEmailEt, jPasswordEt;
  30. Button jSignUpBtn;
  31. ProgressDialog progressDialog;
  32. private FirebaseAuth mAuth;
  33. TextView jAccountExist;
  34. EditText jName, jStudentID, jPhoneNumber, jAddress;
  35. TextView jDOB, jAutoAge;
  36. DatePickerDialog.OnDateSetListener mDateSetListener;
  37. @Override
  38. protected void onCreate(Bundle savedInstanceState) {
  39. super.onCreate(savedInstanceState);
  40. setContentView(R.layout.registerpage);
  41. jEmailEt = findViewById(R.id.emailEt);
  42. jPasswordEt = findViewById(R.id.passwordEt);
  43. mAuth = FirebaseAuth.getInstance();
  44. jName = findViewById(R.id.nameEt);
  45. jStudentID = findViewById(R.id.studentIDEt);
  46. jPhoneNumber = findViewById(R.id.phoneEt);
  47. jAddress = findViewById(R.id.addressEt);
  48. jDOB = findViewById(R.id.DOB);
  49. jAutoAge = findViewById(R.id.AgeAuto);
  50. ActionBar actionBar = getSupportActionBar();
  51. actionBar.setTitle("Sign Up Account");
  52. actionBar.setDisplayHomeAsUpEnabled(true);
  53. actionBar.setDisplayShowHomeEnabled(true);
  54. progressDialog = new ProgressDialog(this);
  55. progressDialog.setMessage("Progressing User...");
  56. findViewById(R.id.signupBtn).setOnClickListener(this);
  57. findViewById(R.id.accountExist).setOnClickListener(this);
  58. findViewById(R.id.DOB).setOnClickListener(this);
  59. }
  60. @Override
  61. public void onClick(View view){
  62. switch (view.getId()){
  63. case R.id.signupBtn:{
  64. registerUser();
  65. }
  66. break;
  67. case R.id.accountExist: {
  68. startActivity(new Intent(registerPage.this, loginPage.class));
  69. finish();
  70. }
  71. break;
  72. }
  73. }
  74. private void registerUser(){
  75. progressDialog.show();
  76. String email = jEmailEt.getText().toString().trim();
  77. String password = jPasswordEt.getText().toString().trim();
  78. String name = jName.getText().toString().trim();
  79. String studentID = jStudentID.getText().toString().trim();
  80. String phoneNo = jPhoneNumber.getText().toString().trim();
  81. String address = jAddress.getText().toString().trim();
  82. if (email.isEmpty()) {
  83. jEmailEt.setError("Email must not be empty");
  84. jEmailEt.setFocusable(true);
  85. return;
  86. }
  87. if (!Patterns.EMAIL_ADDRESS.matcher(email).matches()) {
  88. jEmailEt.setError("Invalid Email");
  89. jEmailEt.setFocusable(true);
  90. return;
  91. }
  92. // ... (similar validation checks for other fields)
  93. jDOB.setOnClickListener(new View.OnClickListener() {
  94. @Override
  95. public void onClick(View v) {
  96. Calendar calendar = Calendar.getInstance();
  97. int year = calendar.get(Calendar.YEAR);
  98. int month = calendar.get(Calendar.MONTH);
  99. int day = calendar.get(Calendar.DAY_OF_MONTH);
  100. DatePickerDialog datePickerDialog = new DatePickerDialog(registerPage.this, android.R.style.Theme_Holo_Dialog_MinWidth, mDateSetListener, year, month, day);
  101. datePickerDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
  102. datePickerDialog.show();
  103. }
  104. });
  105. mDateSetListener = new DatePickerDialog.OnDateSetListener() {
  106. @Override
  107. public void onDateSet(DatePicker view, int year, int month, int day) {
  108. month = month + 1;
  109. String dobDate = day + "/" + month + "/" + year;
  110. jDOB.setText(dobDate);
  111. jAutoAge.setText(getAge(year, month, day));
  112. }
  113. };
  114. mAuth.createUserWithEmailAndPassword(email, password)
  115. .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
  116. @Override
  117. public void onComplete(@NonNull Task<AuthResult> task) {
  118. if (task.isSuccessful()) {
  119. progressDialog.dismiss();
  120. FirebaseUser user = mAuth.getCurrentUser();
  121. // ... (storing user information in Firebase database)
  122. Toast.makeText(registerPage.this, "Registered..\n" + user.getEmail(), Toast.LENGTH_SHORT).show();
  123. startActivity(new Intent(registerPage.this, dashBoard.class));
  124. finish();
  125. } else {
  126. progressDialog.dismiss();
  127. Toast.makeText(registerPage.this, "Authentication failed.",
  128. Toast.LENGTH_SHORT).show();
  129. }
  130. }
  131. }).addOnFailureListener(new OnFailureListener() {
  132. @Override
  133. public void onFailure(@NonNull Exception e) {
  134. progressDialog.dismiss();
  135. Toast.makeText(registerPage.this, "" + e.getMessage(), Toast.LENGTH_SHORT).show();
  136. }
  137. });
  138. }
  139. // ... (getAge function and other methods)
  140. }
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <RelativeLayout
  3. xmlns:android="http://schemas.android.com/apk/res/android"
  4. xmlns:app="http://schemas.android.com/apk/res-auto"
  5. xmlns:tools="http://schemas.android.com/tools"
  6. android:layout_width="match_parent"
  7. android:layout_height="match_parent"
  8. tools:context=".registerPage">
  9. <ScrollView
  10. android:layout_width="match_parent"
  11. android:layout_height="wrap_content">
  12. <RelativeLayout
  13. android:layout_width="match_parent"
  14. android:layout_height="wrap_content">
  15. <!-- View components similar to the original XML layout -->
  16. </RelativeLayout>
  17. </ScrollView>
  18. </RelativeLayout>
英文:

Using Firebase to save User's information by Registering/SignUp. Then I met an obstacle....

I'm using switch case for onClick, which one is for registerpage() method which in form of Button & another for going to next activity via textview. But at the registerpage() method, there is a onClick DatePicker (for selecting dateOfBirth) . But the onClick for DatePicker doesn't work. Here's my code. Thank you.

registerPage.java

  1. package com.example.sportsbuddyz;
  2. import android.app.DatePickerDialog;
  3. import android.app.ProgressDialog;
  4. import android.content.Intent;
  5. import android.graphics.Color;
  6. import android.graphics.drawable.ColorDrawable;
  7. import android.media.tv.TvContract;
  8. import android.nfc.Tag;
  9. import android.support.annotation.NonNull;
  10. import android.support.v7.app.ActionBar;
  11. import android.support.v7.app.AppCompatActivity;
  12. import android.os.Bundle;
  13. import android.util.Log;
  14. import android.util.Patterns;
  15. import android.view.View;
  16. import android.widget.Button;
  17. import android.widget.DatePicker;
  18. import android.widget.EditText;
  19. import android.widget.TextView;
  20. import android.widget.Toast;
  21. import com.google.android.gms.tasks.OnCompleteListener;
  22. import com.google.android.gms.tasks.OnFailureListener;
  23. import com.google.android.gms.tasks.Task;
  24. import com.google.firebase.auth.AuthResult;
  25. import com.google.firebase.auth.FirebaseAuth;
  26. import com.google.firebase.auth.FirebaseUser;
  27. import com.google.firebase.database.DatabaseReference;
  28. import com.google.firebase.database.FirebaseDatabase;
  29. import java.util.Calendar;
  30. import java.util.Date;
  31. import java.util.HashMap;
  32. public class registerPage extends AppCompatActivity implements View.OnClickListener {
  33. EditText jEmailEt, jPasswordEt;
  34. Button jSignUpBtn;
  35. ProgressDialog progressDialog;
  36. private FirebaseAuth mAuth;
  37. TextView jAccountExist;
  38. EditText jName, jStudentID, jPhoneNumber, jAddress;
  39. TextView jDOB, jAutoAge;
  40. DatePickerDialog.OnDateSetListener mDateSetListener;
  41. @Override
  42. protected void onCreate(Bundle savedInstanceState) {
  43. super.onCreate(savedInstanceState);
  44. setContentView(R.layout.registerpage);
  45. jEmailEt = findViewById(R.id.emailEt);
  46. jPasswordEt = findViewById(R.id.passwordEt);
  47. //jSignUpBtn = findViewById(R.id.signupBtn);
  48. mAuth = FirebaseAuth.getInstance();
  49. //jAccountExist = findViewById(R.id.accountExist);
  50. jName = findViewById(R.id.nameEt);
  51. jStudentID = findViewById(R.id.studentIDEt);
  52. jPhoneNumber = findViewById(R.id.phoneEt);
  53. jAddress = findViewById(R.id.addressEt);
  54. jDOB = findViewById(R.id.DOB);
  55. jAutoAge = findViewById(R.id.AgeAuto);
  56. ActionBar actionBar = getSupportActionBar();
  57. actionBar.setTitle(&quot;Sign Up Account&quot;);
  58. actionBar.setDisplayHomeAsUpEnabled(true);
  59. actionBar.setDisplayShowHomeEnabled(true);
  60. progressDialog = new ProgressDialog(this);
  61. progressDialog.setMessage(&quot;Progressing User...&quot;);
  62. findViewById(R.id.signupBtn).setOnClickListener(this);
  63. findViewById(R.id.accountExist).setOnClickListener(this);
  64. findViewById(R.id.DOB).setOnClickListener(this);
  65. }
  66. @Override
  67. public void onClick(View view){
  68. switch (view.getId()){
  69. //CASE 1 -- SignUp Button
  70. case R.id.signupBtn:{
  71. registerUser();
  72. }
  73. break;
  74. //CASE 2 -- AccountExist(Text)
  75. case R.id.accountExist: {
  76. startActivity(new Intent(registerPage.this, loginPage.class));
  77. finish();
  78. }
  79. break;
  80. }
  81. }
  82. private void registerUser(){
  83. progressDialog.show();
  84. String email = jEmailEt.getText().toString().trim();
  85. String password = jPasswordEt.getText().toString().trim();
  86. String name = jName.getText().toString().trim();
  87. String studentID = jStudentID.getText().toString().trim();
  88. String phoneNo = jPhoneNumber.getText().toString().trim();
  89. String address = jAddress.getText().toString().trim();
  90. if (email.isEmpty()) {
  91. jEmailEt.setError(&quot;Email must not be empty&quot;);
  92. jEmailEt.setFocusable(true);
  93. return;
  94. }
  95. if (!Patterns.EMAIL_ADDRESS.matcher(email).matches()) {
  96. jEmailEt.setError(&quot;Invalid Email&quot;);
  97. jEmailEt.setFocusable(true);
  98. return;
  99. }
  100. if (password.isEmpty()) {
  101. jPasswordEt.setError(&quot;Password must not be empty&quot;);
  102. jPasswordEt.setFocusable(true);
  103. return;
  104. }
  105. if (password.length() &lt; 6) {
  106. jPasswordEt.setError(&quot;Password must be at least 6 digit&quot;);
  107. jPasswordEt.setFocusable(true);
  108. return;
  109. }
  110. if (name.isEmpty()) {
  111. jName.setError(&quot;Name must not be empty&quot;);
  112. jName.setFocusable(true);
  113. return;
  114. }
  115. if (studentID.isEmpty()) {
  116. jStudentID.setError(&quot;Student ID must not be empty&quot;);
  117. jStudentID.setFocusable(true);
  118. return;
  119. }
  120. if (phoneNo.isEmpty()) {
  121. jPhoneNumber.setError(&quot;Phone Number must not be empty&quot;);
  122. jPhoneNumber.setFocusable(true);
  123. return;
  124. }
  125. if (address.isEmpty()) {
  126. jAddress.setError(&quot;Address must not be empty&quot;);
  127. jAddress.setFocusable(true);
  128. return;
  129. }
  130. jDOB.setOnClickListener(new View.OnClickListener() {
  131. @Override
  132. public void onClick(View v) {
  133. Calendar calendar = Calendar.getInstance();
  134. int year = calendar.get(Calendar.YEAR);
  135. int month = calendar.get(Calendar.MONTH);
  136. int day = calendar.get(Calendar.DAY_OF_MONTH);
  137. DatePickerDialog datePickerDialog = new DatePickerDialog(registerPage.this, android.R.style.Theme_Holo_Dialog_MinWidth, mDateSetListener, year, month, day);
  138. datePickerDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
  139. datePickerDialog.show();
  140. }
  141. });
  142. mDateSetListener = new DatePickerDialog.OnDateSetListener() {
  143. @Override
  144. public void onDateSet(DatePicker view, int year, int month, int day) {
  145. month = month + 1;
  146. String dobDate = day + &quot;/&quot; + month + &quot;/&quot; + year;
  147. jDOB.setText(dobDate);
  148. jAutoAge.setText(getAge(year, month, day));
  149. }
  150. };
  151. mAuth.createUserWithEmailAndPassword(email, password)
  152. .addOnCompleteListener(this, new OnCompleteListener&lt;AuthResult&gt;() {
  153. @Override
  154. public void onComplete(@NonNull Task&lt;AuthResult&gt; task) {
  155. if (task.isSuccessful()) {
  156. // Sign in success, dismiss dialog &amp; start register activity
  157. progressDialog.dismiss();
  158. //User userDetail = new User(email, name, studentID, phoneNo, address);
  159. FirebaseUser user = mAuth.getCurrentUser();
  160. //Get User email and UID from auth
  161. String email = user.getEmail();
  162. String uid = user.getUid();
  163. String name = jName.getText().toString().trim();
  164. String studentID = jStudentID.getText().toString().trim();
  165. String phoneNo = jPhoneNumber.getText().toString().trim();
  166. String address = jAddress.getText().toString().trim();
  167. String DOB = jDOB.getText().toString().trim();
  168. String Age = jAutoAge.getText().toString().trim();
  169. //User is registered store user info in Firebase realtime database also
  170. HashMap&lt;Object,String&gt; hashMap = new HashMap&lt;&gt;();
  171. //Put Info in HashMap
  172. hashMap.put(&quot;email&quot;,email);
  173. hashMap.put(&quot;uid&quot;,uid);
  174. hashMap.put(&quot;name&quot;, name);
  175. hashMap.put(&quot;studentID&quot;, studentID);
  176. hashMap.put(&quot;phone&quot;,phoneNo);
  177. hashMap.put(&quot;address&quot;,address);
  178. hashMap.put(&quot;Date Of Birth&quot;, DOB);
  179. hashMap.put(&quot;Age&quot;,Age);
  180. hashMap.put(&quot;image&quot;,&quot;&quot;);
  181. hashMap.put(&quot;cover&quot;,&quot;&quot;);
  182. //Firebase database instance
  183. FirebaseDatabase database = FirebaseDatabase.getInstance();
  184. //path to store user data named &quot;Users&quot;
  185. DatabaseReference reference = database.getReference(&quot;Users&quot;);
  186. //Put data within HashMap in database
  187. reference.child(uid).setValue(hashMap);
  188. Toast.makeText(registerPage.this, &quot;Registered..\n&quot;+user.getEmail(), Toast.LENGTH_SHORT).show();
  189. startActivity(new Intent(registerPage.this, dashBoard.class));
  190. finish();
  191. } else {
  192. // If sign in fails, display a message to the user.
  193. progressDialog.dismiss();
  194. Toast.makeText(registerPage.this, &quot;Authentication failed.&quot;,
  195. Toast.LENGTH_SHORT).show();
  196. }
  197. }
  198. }).addOnFailureListener(new OnFailureListener() {
  199. @Override
  200. public void onFailure(@NonNull Exception e) {
  201. progressDialog.dismiss();
  202. Toast.makeText(registerPage.this, &quot;&quot;+e.getMessage(), Toast.LENGTH_SHORT).show();
  203. }
  204. });
  205. }
  206. private String getAge(int year, int month, int day){
  207. Calendar dob = Calendar.getInstance();
  208. Calendar today = Calendar.getInstance();
  209. dob.set(year, month, day);
  210. int age = today.get(Calendar.YEAR) - dob.get(Calendar.YEAR);
  211. if (today.get(Calendar.DAY_OF_YEAR) &lt; dob.get(Calendar.DAY_OF_YEAR)){
  212. age--;
  213. }
  214. Integer ageInt = new Integer(age);
  215. String ageS = ageInt.toString();
  216. return ageS;
  217. }
  218. @Override
  219. public boolean onSupportNavigateUp(){
  220. onBackPressed();
  221. return super.onSupportNavigateUp();
  222. }
  223. @Override
  224. public void onPointerCaptureChanged(boolean hasCapture) {
  225. }
  226. }

registerpage.xml

  1. &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
  2. &lt;RelativeLayout
  3. xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
  4. xmlns:app=&quot;http://schemas.android.com/apk/res-auto&quot;
  5. xmlns:tools=&quot;http://schemas.android.com/tools&quot;
  6. android:layout_width=&quot;match_parent&quot;
  7. android:layout_height=&quot;match_parent&quot;
  8. tools:context=&quot;.registerPage&quot;&gt;
  9. &lt;ScrollView
  10. android:layout_width=&quot;match_parent&quot;
  11. android:layout_height=&quot;wrap_content&quot;&gt;
  12. &lt;RelativeLayout
  13. android:layout_width=&quot;match_parent&quot;
  14. android:layout_height=&quot;wrap_content&quot;&gt;
  15. &lt;!--Confirm Sign Up Button--&gt;
  16. &lt;Button
  17. android:id=&quot;@+id/signupBtn&quot;
  18. style=&quot;@style/Widget.AppCompat.Button.Small&quot;
  19. android:layout_width=&quot;163dp&quot;
  20. android:layout_height=&quot;47dp&quot;
  21. android:layout_centerHorizontal=&quot;true&quot;
  22. android:background=&quot;@drawable/loginbutton&quot;
  23. android:text=&quot;Sign Up&quot;
  24. android:layout_below=&quot;@id/accountExist&quot;
  25. android:layout_margin=&quot;10dp&quot;
  26. android:textAllCaps=&quot;false&quot;
  27. android:textStyle=&quot;bold&quot; /&gt;
  28. &lt;!--EmailAddress--&gt;
  29. &lt;android.support.design.widget.TextInputLayout
  30. android:id=&quot;@+id/emailTIL&quot;
  31. android:layout_width=&quot;325dp&quot;
  32. android:layout_height=&quot;wrap_content&quot;
  33. android:layout_centerHorizontal=&quot;true&quot;
  34. android:layout_marginTop=&quot;120dp&quot;&gt;
  35. &lt;EditText
  36. android:id=&quot;@+id/emailEt&quot;
  37. android:layout_width=&quot;match_parent&quot;
  38. android:layout_height=&quot;wrap_content&quot;
  39. android:hint=&quot;Email Address&quot;
  40. android:inputType=&quot;textEmailAddress&quot; /&gt;
  41. &lt;/android.support.design.widget.TextInputLayout&gt;
  42. &lt;!--Password--&gt;
  43. &lt;android.support.design.widget.TextInputLayout
  44. android:id=&quot;@+id/passwordTIL&quot;
  45. android:layout_width=&quot;325dp&quot;
  46. android:layout_height=&quot;wrap_content&quot;
  47. android:layout_centerVertical=&quot;true&quot;
  48. android:layout_centerHorizontal=&quot;true&quot;
  49. android:layout_below=&quot;@+id/emailTIL&quot;
  50. app:passwordToggleEnabled=&quot;true&quot;&gt;
  51. &lt;EditText
  52. android:id=&quot;@+id/passwordEt&quot;
  53. android:layout_width=&quot;match_parent&quot;
  54. android:layout_height=&quot;wrap_content&quot;
  55. android:hint=&quot;Password&quot;
  56. android:inputType=&quot;textPassword&quot; /&gt;
  57. &lt;/android.support.design.widget.TextInputLayout&gt;
  58. &lt;!--Name--&gt;
  59. &lt;android.support.design.widget.TextInputLayout
  60. android:id=&quot;@+id/nameTIL&quot;
  61. android:layout_width=&quot;325dp&quot;
  62. android:layout_height=&quot;wrap_content&quot;
  63. android:layout_centerVertical=&quot;true&quot;
  64. android:layout_centerHorizontal=&quot;true&quot;
  65. android:layout_below=&quot;@+id/passwordTIL&quot;
  66. app:passwordToggleEnabled=&quot;true&quot;&gt;
  67. &lt;EditText
  68. android:id=&quot;@+id/nameEt&quot;
  69. android:layout_width=&quot;match_parent&quot;
  70. android:layout_height=&quot;wrap_content&quot;
  71. android:hint=&quot;Full Name&quot;
  72. android:inputType=&quot;textPersonName&quot; /&gt;
  73. &lt;/android.support.design.widget.TextInputLayout&gt;
  74. &lt;!--Student ID--&gt;
  75. &lt;android.support.design.widget.TextInputLayout
  76. android:id=&quot;@+id/studentIDTIL&quot;
  77. android:layout_width=&quot;325dp&quot;
  78. android:layout_height=&quot;wrap_content&quot;
  79. android:layout_centerVertical=&quot;true&quot;
  80. android:layout_centerHorizontal=&quot;true&quot;
  81. android:layout_below=&quot;@+id/nameTIL&quot;
  82. app:passwordToggleEnabled=&quot;true&quot;&gt;
  83. &lt;EditText
  84. android:id=&quot;@+id/studentIDEt&quot;
  85. android:layout_width=&quot;match_parent&quot;
  86. android:layout_height=&quot;wrap_content&quot;
  87. android:hint=&quot;Student ID&quot; /&gt;
  88. &lt;/android.support.design.widget.TextInputLayout&gt;
  89. &lt;!--Phone Number--&gt;
  90. &lt;android.support.design.widget.TextInputLayout
  91. android:id=&quot;@+id/phoneTIL&quot;
  92. android:layout_width=&quot;325dp&quot;
  93. android:layout_height=&quot;wrap_content&quot;
  94. android:layout_centerVertical=&quot;true&quot;
  95. android:layout_centerHorizontal=&quot;true&quot;
  96. android:layout_below=&quot;@+id/studentIDTIL&quot;
  97. app:passwordToggleEnabled=&quot;true&quot;&gt;
  98. &lt;EditText
  99. android:id=&quot;@+id/phoneEt&quot;
  100. android:layout_width=&quot;match_parent&quot;
  101. android:layout_height=&quot;wrap_content&quot;
  102. android:hint=&quot;Phone No.&quot;
  103. android:inputType=&quot;phone&quot; /&gt;
  104. &lt;/android.support.design.widget.TextInputLayout&gt;
  105. &lt;!--DOB--&gt;
  106. &lt;TextView
  107. android:id=&quot;@+id/DOB&quot;
  108. android:layout_width=&quot;150dp&quot;
  109. android:layout_height=&quot;50dp&quot;
  110. android:layout_marginBottom=&quot;140dp&quot;
  111. android:textAlignment=&quot;center&quot;
  112. android:hint=&quot;Date of Birth&quot;
  113. android:layout_below=&quot;@+id/addressTIL&quot;
  114. android:layout_marginTop=&quot;10dp&quot;
  115. android:layout_marginLeft=&quot;30dp&quot;
  116. android:textSize=&quot;20dp&quot;/&gt;
  117. &lt;!--Age--&gt;
  118. &lt;TextView
  119. android:id=&quot;@+id/AgeAuto&quot;
  120. android:layout_width=&quot;150dp&quot;
  121. android:layout_height=&quot;50dp&quot;
  122. android:layout_marginBottom=&quot;140dp&quot;
  123. android:textAlignment=&quot;center&quot;
  124. android:hint=&quot;Age&quot;
  125. android:layout_toRightOf=&quot;@+id/DOB&quot;
  126. android:layout_below=&quot;@id/addressTIL&quot;
  127. android:layout_margin=&quot;10dp&quot;
  128. android:layout_marginLeft=&quot;10dp&quot;
  129. android:textSize=&quot;20dp&quot;/&gt;
  130. &lt;!--Address--&gt;
  131. &lt;android.support.design.widget.TextInputLayout
  132. android:id=&quot;@+id/addressTIL&quot;
  133. android:layout_width=&quot;325dp&quot;
  134. android:layout_height=&quot;wrap_content&quot;
  135. android:layout_centerVertical=&quot;true&quot;
  136. android:layout_centerHorizontal=&quot;true&quot;
  137. android:layout_below=&quot;@+id/phoneTIL&quot;
  138. app:passwordToggleEnabled=&quot;true&quot;&gt;
  139. &lt;EditText
  140. android:id=&quot;@+id/addressEt&quot;
  141. android:layout_width=&quot;match_parent&quot;
  142. android:layout_height=&quot;wrap_content&quot;
  143. android:hint=&quot;Address&quot;
  144. android:inputType=&quot;textShortMessage&quot;/&gt;
  145. &lt;/android.support.design.widget.TextInputLayout&gt;
  146. &lt;!--Already Register? Login now--&gt;
  147. &lt;TextView
  148. android:id=&quot;@+id/accountExist&quot;
  149. android:layout_width=&quot;match_parent&quot;
  150. android:layout_height=&quot;wrap_content&quot;
  151. android:layout_marginBottom=&quot;140dp&quot;
  152. android:textAlignment=&quot;center&quot;
  153. android:text=&quot;Already have account? Login now&quot;
  154. android:layout_below=&quot;@+id/AgeAuto&quot;
  155. android:layout_margin=&quot;10dp&quot;/&gt;
  156. &lt;/RelativeLayout&gt;
  157. &lt;/ScrollView&gt;
  158. &lt;/RelativeLayout&gt;

答案1

得分: 0

请注意,以下是您要翻译的内容:

请尝试以下添加DatePicker的方法:

首先,在XML中以这种方式添加DatePicker:

  1. <DatePicker
  2. android:id="@+id/datePicker"
  3. android:layout_width="wrap_content"
  4. android:layout_height="wrap_content"
  5. android:datePickerMode="spinner"/>

现在进入您的Activity.java文件:
//您可以使用可见性函数来显示/隐藏日期选择器。
//或者尝试创建一个包含DatePicker的弹出窗口。这样做会更容易,而且看起来更清晰。

  1. DatePicker datePicker = (DatePicker)findViewById(R.id.datePicker);
  2. datePicker.setSpinnersShown(false);

在点击jDOB之后:

//jDOB.setOnClickListener:
String day = "Day = " + datePicker.getDayOfMonth();
String month = "Month = " + datePicker.getMonth();
String year = "Year = " + datePicker.getYear();

String dobDate = day + "/" + month + "/" + year;
jDOB.setText(dobDate);

  1. <details>
  2. <summary>英文:</summary>
  3. Can you try this way of adding DatePicker?
  4. First add the DatePicker in XML this way:
  5. &lt;DatePicker
  6. android:id=&quot;@+id/datePicker&quot;
  7. android:layout_width=&quot;wrap_content&quot;
  8. android:layout_height=&quot;wrap_content&quot;
  9. android:datePickerMode=&quot;spinner&quot;/&gt;
  10. Now go to your Activity.java:
  11. //You can use visibility function to show/hide the datapicker.
  12. // Or try creating a pop-up containing the DatePicker. It will be easy and look cleaner.
  13. DatePicker datePicker = (DatePicker)findViewById(R.id.datePicker);
  14. datePicker.setSpinnersShown(false);
  15. Now after clicking the jDOB :
  16. //jDOB.setOnClickListener:
  17. String day = &quot;Day = &quot; + datePicker.getDayOfMonth();
  18. String month = &quot;Month = &quot; + datePicker.getMonth();
  19. String year = &quot;Year = &quot; + datePicker.getYear();
  20. String dobDate = day + &quot;/&quot; + month + &quot;/&quot; + year;
  21. jDOB.setText(dobDate);
  22. </details>
  23. # 答案2
  24. **得分**: 0
  25. ```java
  26. 你注册了两次点击监听器
  27. 在xml中使用了onClick,在Java代码中使用了setOnClickListener
  28. 所以你需要移除其中一个... 在你的情况下移除onClickListener,然后将你的代码放在switch case中
  29. @Override
  30. public void onClick(View view){
  31. switch (view.getId()){
  32. case R.id.DOB:
  33. Calendar calendar = Calendar.getInstance();
  34. int year = calendar.get(Calendar.YEAR);
  35. int month = calendar.get(Calendar.MONTH);
  36. int day = calendar.get(Calendar.DAY_OF_MONTH);
  37. DatePickerDialog datePickerDialog = new DatePickerDialog(registerPage.this, android.R.style.Theme_Holo_Dialog_MinWidth, mDateSetListener, year, month, day);
  38. datePickerDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
  39. datePickerDialog.show();
  40. break;
  41. }
  42. }
英文:

You registered the click listener twice

onClick in xml and setOnClickListener in java code

So you have to remove one of them .. in your case remove onClickListener and put your code in switch case

  1. @Override
  2. public void onClick(View view){
  3. switch (view.getId()){
  4. case R.id.DOB:
  5. Calendar calendar = Calendar.getInstance();
  6. int year = calendar.get(Calendar.YEAR);
  7. int month = calendar.get(Calendar.MONTH);
  8. int day = calendar.get(Calendar.DAY_OF_MONTH);
  9. DatePickerDialog datePickerDialog = new DatePickerDialog(registerPage.this, android.R.style.Theme_Holo_Dialog_MinWidth, mDateSetListener, year, month, day);
  10. datePickerDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
  11. datePickerDialog.show();
  12. break;
  13. }
  14. }

huangapple
  • 本文由 发表于 2020年4月5日 14:21:21
  • 转载请务必保留本文链接:https://go.coder-hub.com/61038781.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定