2017-06-17 2 views
0

Android Studio offene App wieder app-Absturz zeigt, wenn ich Zeichen klicken auf Schaltfläche Die App läuft gut, aber wenn ich das Zeichen klicken auf Taste stürzt, wollen auch neue Tätigkeit beginnen nach Anmeldung aber der Fehler ist comAndroid App abstürzt, nachdem Button

ich denke, es gibt ein Problem mit Schaltfläche klicken Zuhörer oder Validierungscode aber nicht wissen, wo dieser Fehler herkommt.

finden meine Java-Datei Code:

public class SignUp extends AppCompatActivity { 
    private static final String TAG = "SignUp"; 
    private Vibrator vib; 
    Animation animShake; 
    private EditText signupInputName, signupInputEmail, signupInputPassword, signupInputDOB; 
    private TextInputLayout signupInputLayoutName, signupInputLayoutEmail, signupInputLayoutPasword, signupInputLayoutDOB; 
    private Button btnSignUp; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.sign_up_form); 
     signupInputLayoutName = (TextInputLayout) findViewById(R.id.sign_up_name); 
     signupInputLayoutName = (TextInputLayout) findViewById(R.id.sign_up_email); 
     signupInputLayoutName = (TextInputLayout) findViewById(R.id.sign_up_Password); 
     signupInputLayoutName = (TextInputLayout) findViewById(R.id.sign_up_DOB); 

     signupInputName = (EditText) findViewById(R.id.signup_input_name); 
     signupInputName = (EditText) findViewById(R.id.signup_input_email); 
     signupInputName = (EditText) findViewById(R.id.signup_input_Password); 
     signupInputName = (EditText) findViewById(R.id.signup_input_DOB); 

     btnSignUp = (Button) findViewById(R.id.btn_signUp); 
     animShake = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.shake); 
     vib = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE); 

     btnSignUp.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       register(); 
      } 
     }); 
    } 

    public void register() { 
     submitForm(); 
     { 
      if (!checkName() || !checkEmail() || !checkDOB() || !checkPassword()) { 
       Toast.makeText(this, "signup failed", Toast.LENGTH_SHORT).show(); 
      } else { 
       onSignupSuccess(); 
      } 
     } 
    } 

    public void onSignupSuccess() { 
     Intent intent = new Intent(SignUp.this, tab1Petrol.class); 
     startActivity(intent); 
     finish(); 
    } 

    private void submitForm() { 
     if (!checkName()) { 
      signupInputName.setAnimation(animShake); 
      signupInputName.startAnimation(animShake); 
      vib.vibrate(125); 
      return; 
     } 
     if (!checkEmail()) { 
      signupInputEmail.setAnimation(animShake); 
      signupInputEmail.startAnimation(animShake); 
      vib.vibrate(125); 
      return; 
     } 
     if (!checkPassword()) { 
      signupInputPassword.setAnimation(animShake); 
      signupInputPassword.startAnimation(animShake); 
      vib.vibrate(125); 
      return; 
     } 
     if (!checkDOB()) { 
      signupInputDOB.setAnimation(animShake); 
      signupInputDOB.startAnimation(animShake); 
      vib.vibrate(125); 
      return; 
     } 
     signupInputLayoutName.setErrorEnabled(false); 
     signupInputLayoutEmail.setErrorEnabled(false); 
     signupInputLayoutPasword.setErrorEnabled(false); 
     signupInputLayoutDOB.setErrorEnabled(false); 
     Toast.makeText(this, "you are successfully Registered", Toast.LENGTH_SHORT).show(); 
    } 

    private boolean checkName() { 
     if (signupInputName.getText().toString().trim().isEmpty()) { 
      signupInputLayoutName.setErrorEnabled(true); 
      signupInputLayoutName.setError("Please enter a Name"); 
      signupInputName.setError("valid Input Required"); 
      return false; 
     } 
     signupInputLayoutName.setErrorEnabled(false); 
     return true; 
    } 

    private boolean checkEmail() { 
     String email = signupInputEmail.getText().toString().trim(); 
     if (email.isEmpty() || !isValidEmail(email)) { 
      signupInputLayoutEmail.setErrorEnabled(true); 
      signupInputLayoutEmail.setError("Please enter a Valid Email"); 
      signupInputEmail.setError("valid Input Required"); 
      requestFocus(signupInputEmail); 
      return false; 
     } 
     signupInputLayoutEmail.setErrorEnabled(false); 
     return true; 
    } 

    private boolean checkPassword() { 
     if (signupInputPassword.getText().toString().trim().isEmpty()) { 
      signupInputLayoutPasword.setError("Please enter password"); 
      requestFocus(signupInputPassword); 
      return false; 
     } 
     signupInputLayoutPasword.setErrorEnabled(false); 
     return true; 
    } 

    private boolean checkDOB() { 
     try { 
      boolean isDateValid = false; 
      String[] s = signupInputDOB.getText().toString().split("/"); 
      int date = Integer.parseInt(s[0]); 
      int month = Integer.parseInt(s[1]); 

      if (date < 32 && month < 13) 
       isDateValid = true; 
      if (signupInputDOB.getText().toString().trim().isEmpty() && isDateValid) { 
       signupInputLayoutDOB.setError("Enter a valid D.O.B"); 
       requestFocus(signupInputDOB); 
       signupInputDOB.setError("valid input required"); 
       return false; 
      } 
     } catch (Exception ex) { 
      signupInputLayoutDOB.setError("Enter a valid D.O.B"); 
      requestFocus(signupInputDOB); 
      return false; 
     } 
     signupInputDOB.setError(null); 
     return true; 
    } 

    private static boolean isValidEmail(String email) { 
     return !TextUtils.isEmpty(email) && Patterns.EMAIL_ADDRESS.matcher(email).matches(); 
    } 

    private void requestFocus(View view) { 
     if (view.requestFocus()) { 
      getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE); 
     } 
    } 

} 

XML-Datei Code:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:orientation="vertical" android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical" 
     android:layout_gravity="center"> 

     <android.support.design.widget.TextInputLayout 
      android:id="@+id/sign_up_name" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_centerHorizontal="true"> 

      <EditText 
       android:id="@+id/signup_input_name" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:ems="10" 
       android:hint="@string/name" /> 
     </android.support.design.widget.TextInputLayout> 
     <android.support.design.widget.TextInputLayout 
      android:id="@+id/sign_up_email" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_centerHorizontal="true"> 

      <EditText 
       android:id="@+id/signup_input_email" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:ems="10" 
       android:inputType="textEmailAddress" 
       android:hint="Email" /> 
     </android.support.design.widget.TextInputLayout> 
     <android.support.design.widget.TextInputLayout 
      android:id="@+id/sign_up_Password" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_centerHorizontal="true"> 

      <EditText 
       android:id="@+id/signup_input_Password" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:ems="10" 
       android:inputType="textPassword" 
       android:hint="Password" /> 
     </android.support.design.widget.TextInputLayout> 
     <android.support.design.widget.TextInputLayout 
      android:id="@+id/sign_up_DOB" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_centerHorizontal="true"> 

      <EditText 
       android:id="@+id/signup_input_DOB" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:ems="10" 
       android:maxLines="1" 
       android:hint="Date of Birth" /> 
     </android.support.design.widget.TextInputLayout> 

     <RelativeLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content"> 

      <TextView 
       android:id="@+id/gender_textView" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="I am" 
       android:fontFeatureSettings="Password" 
       android:textSize="20dp" 
       android:fontFamily="Password"/> 
      <RadioGroup 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_toRightOf="@+id/gender_textView" 
       android:orientation="horizontal"> 

       <RadioButton 
        android:id="@+id/male_radio" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:text="Male" 
        android:checked="true"/> 
       <RadioButton 
        android:id="@+id/Female_radio" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:text="Female"/> 
      </RadioGroup> 
     </RelativeLayout> 

     <Button 
      android:id="@+id/btn_signUp" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:background="@color/colorPrimaryDark" 
      android:text="Sign Up" 
      android:textColor="@android:color/white" /> 


    </LinearLayout> 

</LinearLayout> 
+1

Bitte posten Sie Ihre logcat Fehler. – DaveNOTDavid

+0

in Bezug auf Ihren Code ist nicht nach Java-Konventionen und haben mehrere Fehler. – Pavan

+0

Zuerst haben Sie viele Copy Paste Fehler (findViewById Teile). Zweitens ist Ihre Logik beim Überprüfen von Feldern schlecht. Bitte überarbeiten Sie sie und bearbeiten Sie Ihre Frage. –

Antwort

0

Gut für Starter Sie hier die Eingabefelder erneut zuweisen, die vorherige Überschreiben ... Ich bin mir ziemlich sicher, dass das Problem deswegen ist.

signupInputName = (EditText) findViewById(R.id.signup_input_name); 
signupInputName = (EditText) findViewById(R.id.signup_input_email); 
signupInputName = (EditText) findViewById(R.id.signup_input_Password); 
signupInputName = (EditText) findViewById(R.id.signup_input_DOB); 

signupInputLayoutName = (TextInputLayout) findViewById(R.id.sign_up_name); 
signupInputLayoutName = (TextInputLayout) findViewById(R.id.sign_up_email); 
signupInputLayoutName = (TextInputLayout) findViewById(R.id.sign_up_DOB); 

Das allererste, was Ihr Code nach onCreate() tut, ist checkEmail(), und wie ich bereits erwähnt, gibt es keine R.id.signup_input_email zu signupInputEmail zugeordnet.

Ihr Code löst hier eine Ausnahme aus, da sich checkEmail() auf eine NULL-Variable bezieht.

if (!checkEmail()) { ... }

+0

Guter Fang! Und die TextInputLayouts auch. – DaveNOTDavid

Verwandte Themen