2017-01-15 2 views
1

Je suis assez nouveau pour la programmation Android et je ne peux pas comprendre quel est le problème ici. J'ai un formulaire d'inscription qui valide avant d'envoyer des informations de registre et d'aller à une autre activité. Formulaire de validation fonctionne si faux, mais quand tous les champs sont entrés il y a et erreur quand je clique sur le bouton.erreur de validation onClick lors d'une autre activité

code Java:

import android.content.Intent; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.util.Patterns; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.Toast; 

public class registracijaLastnika extends AppCompatActivity { 

EditText etName; 
EditText etSurname; 
EditText etPasswordL; 
EditText etUsernameL; 
EditText etEmailL; 
EditText etRepeatPasswordL; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_registracija_lastnika); 

    etName = (EditText) findViewById(R.id.etIme); 
    etSurname = (EditText) findViewById(R.id.etPriimek); 
    etPasswordL = (EditText) findViewById(R.id.etPasswordL); 
    etUsernameL = (EditText) findViewById(R.id.etUsernameL); 
    etEmailL = (EditText) findViewById(R.id.etEmailL); 
    etRepeatPasswordL = (EditText) findViewById(R.id.etRepeatPasswordL); 
    final Button bRegisterL = (Button) findViewById(R.id.bRegisterL); 
    bRegisterL.setOnClickListener(new View.OnClickListener() { 


     @Override 
     public void onClick(View v) { 
      String type = "regLas"; 
      String ime = etName.getText().toString(); 
      String priimek = etSurname.getText().toString(); 
      String uporabnisko_ime = etUsernameL.getText().toString(); 
      String geslo = etPasswordL.getText().toString(); 
      String email = etEmailL.getText().toString(); 



      validate(); 
      if(!validate()) { 
       Toast.makeText(getApplicationContext(), "Signup has  Failed",Toast.LENGTH_SHORT).show(); 
      } 
      else { 
       BackgroundWorker backgroundWorker = new  BackgroundWorker(getApplicationContext()); 
       backgroundWorker.execute(type, ime, priimek, uporabnisko_ime, geslo, email); 
       Intent registerIntent = new Intent(registracijaLastnika.this, registracijaKavarne.class); 
       registracijaLastnika.this.startActivity(registerIntent); 
      } 

     } 
    });} 
public boolean validate(){ 
    boolean valid = true; 
    if(etName.length()<1 || etName.length()>32){ 
     etName.setError("Please enter valid name"); 
     valid = false; 
    } 
    if(etSurname.length()<1 || etSurname.length()>32){ 
     etSurname.setError("Please enter valid name"); 
     valid = false; 
    } 
    if(etEmailL.length()<1 || !Patterns.EMAIL_ADDRESS.matcher((CharSequence) etEmailL).matches()){ 
     etEmailL.setError("Please enter valid email address"); 
     valid = false; 
    } 
    if(etPasswordL.length()<1){ 
     etPasswordL.setError("Please enter valid password"); 
     valid = false; 
    } 
    if(etRepeatPasswordL.length()<1){ 
     etRepeatPasswordL.setError("Please enter valid password"); 
     valid = false; 
    } 
    if(!etRepeatPasswordL.equals(etPasswordL)){ 
     etPasswordL.setError("Passwords don't match!"); 
     valid = false; 
    } 
    if(etUsernameL.length()<1 || etUsernameL.length()>32){ 
     etUsernameL.setError("Please enter valid name"); 
     valid = false; 
    } 
    return valid; 
} 
} 

fichier XML de cette activité:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/activity_registracija_lastnika" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context="com.example.lipic.coffeeaddict.registracijaLastnika"> 

<TextView 
    android:text="@string/personal_information" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/tNaslov2L" 
    android:layout_marginTop="21dp" 
    android:textAppearance="@style/TextAppearance.AppCompat.Medium" 
    android:layout_below="@+id/tNaslovL" 
    android:layout_alignParentStart="true" 
    android:textStyle="normal|bold" /> 

<EditText 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:inputType="textPersonName" 
    android:ems="10" 
    android:id="@+id/etUsernameL" 
    android:hint="@string/username" 
    android:layout_marginTop="11dp" 
    android:layout_below="@+id/etPriimek" 
    android:layout_alignParentStart="true" /> 

<EditText 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:inputType="textEmailAddress" 
    android:ems="10" 
    android:id="@+id/etEmailL" 
    android:hint="@string/email" 
    android:layout_marginTop="13dp" 
    android:layout_below="@+id/etRepeatPasswordL" 
    android:layout_alignParentStart="true" /> 

<EditText 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:inputType="textPersonName" 
    android:ems="10" 
    android:id="@+id/etPriimek" 
    android:hint="@string/Surname" 
    android:layout_marginTop="7dp" 
    android:layout_below="@+id/etIme" 
    android:layout_alignParentStart="true" /> 

<EditText 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:inputType="textPassword" 
    android:ems="10" 
    android:id="@+id/etRepeatPasswordL" 
    android:hint="@string/Rpassword" 
    android:layout_marginTop="10dp" 
    android:layout_below="@+id/etPasswordL" 
    android:layout_alignParentStart="true" /> 

<Button 
    android:text="@string/proceed_to_caffeteria_information" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/bRegisterL" 
    android:onClick="regLas" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentStart="true" 
    android:layout_alignParentEnd="true" /> 

<EditText 
    android:layout_width="70dp" 
    android:layout_height="wrap_content" 
    android:inputType="textPersonName" 
    android:ems="10" 
    android:id="@+id/etIme" 
    android:layout_marginTop="12dp" 
    android:hint="@string/Name" 
    android:layout_below="@+id/tNaslov2L" 
    android:layout_alignParentStart="true" /> 

<EditText 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:ems="10" 
    android:id="@+id/etPasswordL" 
    android:hint="@string/password" 
    android:layout_marginTop="13dp" 
    android:inputType="textPassword" 
    android:layout_below="@+id/etUsernameL" 
    android:layout_alignParentStart="true" /> 

<TextView 
    android:text="@string/owner_registration" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/tNaslovL" 
    android:textAppearance="@style/TextAppearance.AppCompat.Display1" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true" /> 

</RelativeLayout> 

Code BackgroundWorker:

private String backgroundRegLas(String regLasURL, String... params){ 

    try { 
     String ime = params[1]; 
     String priimek = params[2]; 
     String uporabnisko_ime = params[3]; 
     String geslo = params[4]; 
     String email = params[5]; 
     URL url = new URL(regLasURL); 
     HttpURLConnection httpURLConnection = (HttpURLConnection)url.openConnection(); 
     httpURLConnection.setRequestMethod("POST"); 
     httpURLConnection.setDoOutput(true); 
     httpURLConnection.setDoInput(true); 

     OutputStream outputStream = httpURLConnection.getOutputStream(); 
     BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream, "UTF-8")); 
     String post_data = URLEncoder.encode("ime","UTF-8")+"="+ URLEncoder.encode(ime,"UTF-8")+"&" 
       +URLEncoder.encode("priimek","UTF-8")+"="+ URLEncoder.encode(priimek,"UTF-8")+"&" 
       +URLEncoder.encode("uporabnisko_ime","UTF-8")+"="+ URLEncoder.encode(uporabnisko_ime,"UTF-8")+"&" 
       +URLEncoder.encode("geslo","UTF-8")+"="+ URLEncoder.encode(geslo,"UTF-8")+"&" 
       +URLEncoder.encode("email","UTF-8")+"="+ URLEncoder.encode(email,"UTF-8"); 
     bufferedWriter.write(post_data); 
     bufferedWriter.flush(); 
     bufferedWriter.close(); 
     outputStream.close(); 

     InputStream inputStream = httpURLConnection.getInputStream(); 
     BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream,"iso-8859-1")); 
     String result= bufferedReader.readLine(); 
     bufferedReader.close(); 
     inputStream.close(); 
     httpURLConnection.disconnect(); 

     return result; 

    } catch (MalformedURLException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

    return null; 
} 

et est ici l'erreur

E/AndroidRuntime: FATAL EXCEPTION: main 
       Process: com.example.lipic.coffeeaddict, PID: 3234 
       java.lang.ClassCastException: android.support.v7.widget.AppCompatEditText cannot be cast to java.lang.CharSequence 
        at com.example.lipic.coffeeaddict.registracijaLastnika.validate(registracijaLastnika.java:76) 
        at com.example.lipic.coffeeaddict.registracijaLastnika$1.onClick(registracijaLastnika.java:53) 
        at android.view.View.performClick(View.java:5610) 
        at android.view.View$PerformClick.run(View.java:22265) 
        at android.os.Handler.handleCallback(Handler.java:751) 
        at android.os.Handler.dispatchMessage(Handler.java:95) 
        at android.os.Looper.loop(Looper.java:154) 
        at android.app.ActivityThread.main(ActivityThread.java:6077) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755) 

L'application s'est terminée.

Nous vous remercions de votre aide.

Répondre

0

Je pense que problème est en méthode validate

if(etName.length()<1 || etName.length()>32){ 
    etName.setError("Please enter valid name"); 
    valid = false; 
} 

Ici, vous auriez dû faire

etName.getText().length() 

Passez en revue toutes les autres si la condition dans la méthode de validation et de changement.