2017-01-15 6 views
1

저는 Android 프로그래밍에 새로운 경험이 있으며 여기에서 문제가 무엇인지 파악할 수 없습니다. 나는 등록 정보를 보내고 다른 활동으로 가기 전에 확인하는 등록 양식을 가지고 있습니다. form validate가 false이면 작동하지만 모든 필드를 입력하면 버튼을 클릭 할 때 오류가 발생합니다.다른 활동으로 이동하는 동안 onClick 유효성 검사 오류가 발생했습니다.

자바 코드 :이 활동의 ​​

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; 
} 
} 

XML 파일 :

<?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> 

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; 
} 

및 오류

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) 
,536입니다

응용 프로그램이 종료되었습니다.

도움 주셔서 감사합니다.

답변

0

나는 문제가 validate 메소드에

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

당신이

etName.getText().length() 

검토 했어야 생각 다른 모든 경우 validate 메소드 및 변화 상태.