2017-10-05 3 views
0

SQL로 로그인 버튼을 만들고 싶습니다.오류 "android : onClick 메서드를 실행할 수 없습니다"

<ImageButton 
      android:id="@+id/login" 
      android:layout_width="205dp" 
      android:layout_height="50dp" 
      android:layout_gravity="center" 
      android:adjustViewBounds="true" 
      android:background="@color/hostlent" 
      android:baselineAlignBottom="false" 
      android:contextClickable="false" 
      android:cropToPadding="false" 
      android:keepScreenOn="false" 
      android:nestedScrollingEnabled="false" 
      android:onClick="loginon" 
      android:saveEnabled="false" 
      android:scaleType="fitCenter" 
      app:srcCompat="@drawable/login" 
      tools:layout_editor_absoluteX="86dp" 
      tools:layout_editor_absoluteY="332dp" /> 

: 이것은 내 xml 파일이

public void loginon(View v) { 
    String Email = email.getText().toString().trim(); 
    String Password = password.getText().toString().trim(); 
    String type = "login"; 
    worker worker = new worker(this); 
    worker.execute(type,Email,Password); 
} 

입니다 : 이것은 내 온 클릭 코드

Process: com.example.mosab.hostlent, PID: 31057 
java.lang.IllegalStateException: Could not execute method for android:onClick 
    at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:293) 
    at android.view.View.performClick(View.java:5609) 
    at android.view.View$PerformClick.run(View.java:22263) 
    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) 
    Caused by: java.lang.reflect.InvocationTargetException 
    at java.lang.reflect.Method.invoke(Native Method) 
    at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288) 
    at android.view.View.performClick(View.java:5609)  
    at android.view.View$PerformClick.run(View.java:22263)  
    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)  
    Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.text.Editable android.widget.EditText.getText()' on a null object reference 
    at com.example.mosab.hostlent.login.loginon(login.java:92) 
    at java.lang.reflect.Method.invoke(Native Method)  
    at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288)  
    at android.view.View.performClick(View.java:5609)  
    at android.view.View$PerformClick.run(View.java:22263)  
    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)  

이다 : 나는 응용 프로그램을 실행하면, 나는 온 클릭 오류가 내 수업에서 onclick 코드로 호출 :

public class worker extends AsyncTask<String,Void,String> { 
Context context ; 
AlertDialog alertDialog; 
worker (Context context){ 
    Context ctx; 
} 
@Override 
protected String doInBackground(String... params) { 
    String type = params[0]; 
    String login_url = "http://192.168.1.239:8080/login.php"; 
    if (type.equals("login")){ 
     try { 
      String email = params[1]; 
      String password = params[2]; 
      URL url = new URL(login_url); 
      HttpsURLConnection httpsURLConnection = (HttpsURLConnection)url.openConnection(); 
      httpsURLConnection.setRequestMethod("post"); 
      httpsURLConnection.setDoOutput(true); 
      httpsURLConnection.setDoInput(true); 
      OutputStream outputStream = httpsURLConnection.getOutputStream(); 
      BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream,"UTF-8")); 
      String post_data = URLEncoder.encode("email","UTF-8")+"="+URLEncoder.encode(email,"UTF-8")+"&"+URLEncoder.encode(password,"UTF-8"); 
      bufferedWriter.write(post_data); 
      bufferedWriter.flush(); 
      bufferedWriter.close(); 
      outputStream.close(); 
      InputStream inputStream = httpsURLConnection.getInputStream(); 
      BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream,"iso-8859-1")); 
      String result=""; 
      String line=""; 
      while ((line=bufferedReader.readLine())!=null){ 
       result += line; 
      } 
      bufferedReader.close(); 
      inputStream.close(); 
      httpsURLConnection.disconnect(); 
      return result; 
     } catch (MalformedURLException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

    } 
    return null; 
} 

@Override 
protected void onPreExecute() { 
    alertDialog=new AlertDialog.Builder(context).create(); 
    alertDialog.setTitle("login status"); 
} 

@Override 
protected void onPostExecute(String result) { 
    alertDialog.setMessage(result); 
    alertDialog.show(); 
} 

@Override 
protected void onProgressUpdate(Void... values) { 
    super.onProgressUpdate(values); 
} 
} 

나는 매니페스트 파일에이 코드를 추가하고 :

<uses-permission android:name="android.permission.INTERNET"></uses-permission>" 

당신이 내 오류가 발생하는 이해하는 데 도움이 수 있습니까?

+1

품질 향상을 위해 변경된 질문 – Kalamarico

답변

0

이 오류는 다음 중 한 두 줄 중 하나,

String Email = email.getText().toString().trim(); 
String Password = password.getText().toString().trim(); 

변수 이메일 또는 암호 중 하나가 null입니다. onCreate() 메서드에서 이러한 변수를 적절한 편집 텍스트 필드로 설정해야합니다.

여전히 문제를 해결할 수없는 경우 전체 코드가 포함 된 질문을 활동 및 레이아웃 파일 xml로 업데이트하십시오.

관련 문제