2017-08-08 277 views
-1

我需要此幫助。 我正在進行註冊和登錄的活動。在註冊中,我遵循了我認爲我應該遵循的每一個程序。但是當我點擊註冊按鈕時,我仍然有錯誤。我不知道從哪裏產生的錯誤,這就是爲什麼我發現在registerclick方法的錯誤,它給了我這個錯誤Java.lang.nullPointerException: Attempt to invoke virtual method 'int java.lang.string.hashCode() on a null object reference。請不要重複任何問題,因爲我已經搜索了每個看起來像它的問題。仍然無解。這是我的常量類Java.lang.nullPointerException:嘗試在空對象引用上調用虛擬方法'int java.lang.string.hashCode()

package tk.trythisout.learnit; 



public class Constants { 
private static final String ROOT_URL = "192.168.33.149/and/req/"; 
public static final String URL_REGISTER = ROOT_URL+"register.php"; 
} 

RegisterActivity1.java

package tk.trythisout.learnit; 

import android.app.ProgressDialog; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.Spinner; 
import android.widget.Toast; 

import com.android.volley.AuthFailureError; 
import com.android.volley.Request; 
import com.android.volley.RequestQueue; 
import com.android.volley.Response; 
import com.android.volley.VolleyError; 
import com.android.volley.toolbox.StringRequest; 
import com.android.volley.toolbox.Volley; 

import org.json.JSONException; 
import org.json.JSONObject; 

import java.util.HashMap; 
import java.util.Map; 
import java.util.Objects; 

public class RegisterActivity1 extends AppCompatActivity { 
    EditText FirstName, LastName, Email, IndexNumber, Password, Repassword, PhoneNumber; 
    Spinner Level, Program; 
    Button Register; 
// ProgressDialog progressDialog; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_register1); 
     FirstName = (EditText) findViewById(R.id.txtFirstName); 
     LastName = (EditText) findViewById(R.id.txtLastName); 
     Email = (EditText) findViewById(R.id.txtEmail); 
     IndexNumber = (EditText) findViewById(R.id.txtIndexNumber); 
     Password = (EditText) findViewById(R.id.txtPassword); 
     Repassword = (EditText) findViewById(R.id.txtRePassword); 
     PhoneNumber = (EditText) findViewById(R.id.txtPhoneNumber); 
     Level = (Spinner) findViewById(R.id.spinLevel); 
     Program = (Spinner) findViewById(R.id.spinProgram); 
     Register = (Button) findViewById(R.id.btnRegister); 
//  progressDialog = new ProgressDialog(this); 
     Register.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       try { 
        registerClick(); 
       } catch (Exception e) { 
        Toast.makeText(RegisterActivity1.this, "error: "+e, Toast.LENGTH_LONG).show(); 
       } 
      } 
     }); 

    } 

    private void registerClick() throws Exception { 
     final String firstName = FirstName.getText().toString().trim(); 
     final String lastName = LastName.getText().toString().trim(); 
     final String email = Email.getText().toString().trim(); 
     final String indexnumber = IndexNumber.getText().toString().trim(); 
     final String password = Password.getText().toString().trim(); 
     final String repassword = Repassword.getText().toString().trim(); 
     final String phonenumber = PhoneNumber.getText().toString().trim(); 
     final String level = Level.getSelectedItem().toString(); 
     final String program = Program.getSelectedItem().toString(); 
//  progressDialog.setMessage("Registering User..."); 
//  progressDialog.show(); 

      StringRequest stringRequest = new StringRequest(Request.Method.POST, Constants.URL_REGISTER, new Response.Listener<String>() { 
       @Override 
       public void onResponse(String response) { 
//     progressDialog.dismiss(); 
        try { 
         JSONObject jsonObject = new JSONObject(response); 
         Toast.makeText(RegisterActivity1.this, jsonObject.getString("message"), Toast.LENGTH_LONG).show(); 
        } catch (JSONException e) { 

        } 

       } 
      }, new Response.ErrorListener() { 
       @Override 
       public void onErrorResponse(VolleyError error) { 
//     progressDialog.hide(); 
        Toast.makeText(RegisterActivity1.this, "too bad: "+error, Toast.LENGTH_LONG).show(); 

       } 
      }) { 
       @Override 
       protected Map<String, String> getParams() throws AuthFailureError { 
        Map<String, String> params = new HashMap<>(); 
        params.put("indexnumber", indexnumber); 
        params.put("firstName", firstName); 
        params.put("lastName", lastName); 
        params.put("level", level); 
        params.put("email", email); 
        params.put("program", program); 
        params.put("password", password); 
        params.put("phonenumber",phonenumber); 
        return params; 
       } 
      }; 
      RequestQueue requestQueue = Volley.newRequestQueue(this); 
      requestQueue.add(stringRequest); 



    } 
} 

register.php

<?php 

require_once '../includes/dbOperation.php'; 

$response = array(); 

if ($_SERVER['REQUEST_METHOD']=='POST') { 
    # code... 
    if (isset($_POST['indexnumber']) and isset($_POST['firstname']) and isset($_POST['lastname']) 
     and isset($_POST['level']) and isset($_POST['email']) 
     and isset($_POST['program']) and isset($_POST['password']) and isset($_POST['phonenumber'])) 
    { 
     # code... 
     $db = new dbOperation(); 
     if ($db->createUser(
      $_POST['indexnumber'], $_POST['firstname'], $_POST['lastname'], $_POST['level'], $_POST['email'], $_POST['program'], $_POST['password'], $_POST['phonenumber'])) { 
      # code... 
      $response['error'] = false; 
      $response['message'] = 'Successfully Registered'; 

     }else{ 
      $response['error'] = true; 
      $response['message'] = 'Unknown error occurred'; 
     } 
    }else{ 
     $response['error'] = true; 
     $response['message'] = 'All fields are required, Pls input correct values into the fields'; 
    } 
} 
echo json_encode($response); 

dboperation.php

<?php 

class dbOperation{ 
    private $con; 

    function __construct(){ 
     require_once dirname(__FILE__).'/DbConnect.php'; 
     $db = new DbConnect(); 
     $this->con = $db->connect(); 
    } 

    public function createUser($indexnumber, $firstname, $lastname, $level, $email, $program, $password, $phonenumber) 
    { 
     # code... 
     $password = md5($password); 
     $stmt = $this->con->prepare("INSERT INTO `students`(`sn`, `IndexNumber`, `firstName`, `LastName`, `level`, `email`, `department`, `password`, `phonenumber`) VALUES (NULL,?,?,?,?,?,?,?,?)"); 
     $stmt->bind_param("ssssssss",$indexnumber, $firstname, $lastname, $level, $email, $program, $password, $phonenumber); 

    if ($stmt->execute()) { 
     # code... 
     return true; 
    }else{ 
     return false; 
    } 
    } 
} 

請幫助。我被卡住了!

"[email protected]" prio=5 waiting 
    java.lang.Thread.State: WAITING 
     at com.android.volley.Request.<init>(Request.java:136) 
     at com.android.volley.toolbox.StringRequest.<init>(StringRequest.java:43) 
     at tk.trythisout.learnit.RegisterActivity1$4.<init>(RegisterActivity1.java:0) 
     at tk.trythisout.learnit.RegisterActivity1.registerClick(RegisterActivity1.java:74) 
     at tk.trythisout.learnit.RegisterActivity1.access$000(RegisterActivity1.java:27) 
     at tk.trythisout.learnit.RegisterActivity1$1.onClick(RegisterActivity1.java:52) 
     at android.view.View.performClick(View.java:4756) 
     at android.view.View$PerformClick.run(View.java:19749) 
     at android.os.Handler.handleCallback(Handler.java:739) 
     at android.os.Handler.dispatchMessage(Handler.java:95) 
     at android.os.Looper.loop(Looper.java:135) 
     at android.app.ActivityThread.main(ActivityThread.java:5221) 
     at java.lang.reflect.Method.invoke(Method.java:-1) 
     at java.lang.reflect.Method.invoke(Method.java:372) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 

這就是我的一切..

this = {[email protected]} "[ ] 192.168.33.149/and/req/register.php 0x0 NORMAL null" 
this$0 = {[email protected]} 
mListener = null 
mCacheEntry = null 
mErrorListener = {[email protected]} 
mEventLog = null 
mRequestQueue = null 
mRetryPolicy = {[email protected]} 
mSequence = null 
mTag = null 
mUrl = "192.168.33.149/and/req/register.php" 
mRequestBirthTime = 0 
mCanceled = false 
mDefaultTrafficStatsTag = 0 
mMethod = 1 
mResponseDelivered = false 
mShouldCache = true 
shadow$_klass_ = {[email protected]} "class tk.trythisout.learnit.RegisterActivity1$4" 
shadow$_monitor_ = -1782153838 
Exception = {[email protected]} 
cause = {[email protected]} "java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.hashCode()' on a null object reference" 
detailMessage = "Attempt to invoke virtual method 'int java.lang.String.hashCode()' on a null object reference" 
    value = {char[93]@4298} 
    count = 93 
    hashCode = 154031741 
    offset = 0 
    shadow$_klass_ = {[email protected]} "class java.lang.String" 
    shadow$_monitor_ = -1407867750 
stackState = {Object[17]@4287} 
stackTrace = {StackTraceElement[0]@4288} 
suppressedExceptions = {[email protected]} size = 0 
shadow$_klass_ = {[email protected]} "class java.lang.NullPointerException" 
shadow$_monitor_ = -2087831779 
email = "[email protected]" 
firstName = "busaf" 
indexnumber = "afa" 
lastName = "adf" 
level = "300" 
password = "qwerty" 
phonenumber = "5556321" 
program = "BSc. Midwifery" 
x0 = 1 
x1 = "192.168.33.149/and/req/register.php" 
x2 = {[email protected]} 
x3 = {[email protected]} 
+0

請發表您的整個崩潰日誌。 – Bob

+1

異常帶有一個堆棧跟蹤,告訴您問題發生的位置。 – khelwood

+2

請在所有Catch塊中執行e.printStackTrace()以查看有哪些異常。 –

回答

-6

更改此的按鈕;到的按鈕

而且這個Register.setOnClickListener()

register.setOnClickListener()

+2

這些是款式建議。這個答案實際上並沒有解決這個問題。 –

+0

使用駱駝案例命名變量它將解決您的問題,例如EditText名字,姓氏,電子郵件,indexNumber,密碼..等 – user2799399

+0

@ user2799399 *正確*將改變變量名稱自動修復所有問題?這使得絕對零感覺... – Siyual

相關問題