2016-01-27 19 views
-3

我在线路空指针异常机器人零指示字例外的Android的JSONObject

**如果(json.getString(KEY_SUCCESS)!= NULL){

public class Register extends Activity { 


/** 
* JSON Response node names. 
**/ 

@Override 
public void onBackPressed() { 
    Intent bkr = new Intent(this,Login.class); 
    startActivity(bkr); 
    this.finish(); 
} 


private static String KEY_SUCCESS = "success"; 
private static String KEY_UID = "uid"; 
private static String KEY_FIRSTNAME = "fname"; 
private static String KEY_LASTNAME = "lname"; 
private static String KEY_USERNAME = "uname"; 
private static String KEY_EMAIL = "email"; 
private static String KEY_CREATED_AT = "created_at"; 
private static String KEY_ERROR = "error"; 

/** 
* Defining layout items. 
**/ 

EditText inputFirstName; 
EditText inputLastName; 
EditText inputUsername; 
EditText inputEmail; 
EditText inputPassword; 
EditText reinputPassword; 
Button btnRegister; 
TextView registerErrorMsg; 


/** 
* Called when the activity is first created. 
*/ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    Window window = this.getWindow(); 
    window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.register); 

/** 
* Defining all layout items 
**/ 
    inputFirstName = (EditText) findViewById(R.id.fname); 
    inputLastName = (EditText) findViewById(R.id.lname); 
    inputUsername = (EditText) findViewById(R.id.uname); 
    inputEmail = (EditText) findViewById(R.id.email); 
    inputPassword = (EditText) findViewById(R.id.pword); 
    reinputPassword = (EditText) findViewById(R.id.rpword); 
    btnRegister = (Button) findViewById(R.id.register); 
    registerErrorMsg = (TextView) findViewById(R.id.register_error); 

/** * 按钮,这切换回在登录屏幕上点击 **/

Button login = (Button) findViewById(R.id.bktologin); 
    login.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View view) { 
      Intent myIntent = new Intent(view.getContext(), Login.class); 
      startActivityForResult(myIntent, 0); 
      finish(); 
     } 

    }); 

    /** 
    * Register Button click event. 
    * A Toast is set to alert when the fields are empty. 
    * Another toast is set to alert Username must be 5 characters. 
    **/ 

    btnRegister.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 

      if ( (!inputUsername.getText().toString().equals("")) && (!inputPassword.getText().toString().equals("")) && (!inputFirstName.getText().toString().equals("")) && (!inputLastName.getText().toString().equals("")) && (!inputEmail.getText().toString().equals(""))) 
      { 
       if (inputUsername.getText().toString().length() > 4) 
       { 
        if(inputPassword.getText().toString().equals(reinputPassword.getText().toString())) 
        NetAsync(view); 
        else 
        { 
         Toast.makeText(getApplicationContext(), 
           "Passwords Don't Match, Re-Enter Passwords Carefully", Toast.LENGTH_SHORT).show(); 
        } 


       } 
       else 
       { 
        Toast.makeText(getApplicationContext(), 
          "Username should be minimum 5 characters", Toast.LENGTH_SHORT).show(); 
       } 
      } 
      else 
      { 
       Toast.makeText(getApplicationContext(), 
         "One or more fields are empty", Toast.LENGTH_SHORT).show(); 
      } 
     } 
    }); 
    } 
/** 
* Async Task to check whether internet connection is working 
**/ 

private class NetCheck extends AsyncTask<String,String,Boolean> 
{ 
    private ProgressDialog nDialog; 

    @Override 
    protected void onPreExecute(){ 
     super.onPreExecute(); 
     nDialog = new ProgressDialog(Register.this); 
     nDialog.setMessage("Loading.."); 
     nDialog.setTitle("Checking Network"); 
     nDialog.setIndeterminate(false); 
     nDialog.setCancelable(true); 
     nDialog.show(); 
    } 

    @Override 
    protected Boolean doInBackground(String... args){ 

/** * 获取当前的设备状态,并检查交互工作通过尝试Google进行网络连接。 **/

ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
     NetworkInfo netInfo = cm.getActiveNetworkInfo(); 
     if (netInfo != null && netInfo.isConnected()) { 
      try { 
       URL url = new URL("http://www.google.com"); 
       HttpURLConnection urlc = (HttpURLConnection) url.openConnection(); 
       urlc.setConnectTimeout(3000); 
       urlc.connect(); 
       if (urlc.getResponseCode() == 200) { 
        return true; 
       } 
      } catch (MalformedURLException e1) { 
       // TODO Auto-generated catch block 
       e1.printStackTrace(); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
     } 
     return false; 

    } 
    @Override 
    protected void onPostExecute(Boolean th){ 

     if(th == true){ 
      nDialog.dismiss(); 
      new ProcessRegister().execute(); 
     } 
     else{ 
      nDialog.dismiss(); 
      registerErrorMsg.setText("Error in Network Connection"); 
     } 
    } 
} 





private class ProcessRegister extends AsyncTask<String,String,JSONObject> { 

/** * 定义过程对话框 **/ 私人ProgressDialog pDialog;

String email,password,fname,lname,uname; 
    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
     inputUsername = (EditText) findViewById(R.id.uname); 
     inputPassword = (EditText) findViewById(R.id.pword); 
      fname = inputFirstName.getText().toString(); 
      lname = inputLastName.getText().toString(); 
      email = inputEmail.getText().toString(); 
      uname= inputUsername.getText().toString(); 
      password = inputPassword.getText().toString(); 
     pDialog = new ProgressDialog(Register.this); 
     pDialog.setTitle("Contacting Servers"); 
     pDialog.setMessage("Registering ..."); 
     pDialog.setIndeterminate(false); 
     pDialog.setCancelable(true); 
     pDialog.show(); 
    } 

    @Override 
    protected JSONObject doInBackground(String... args) { 


    UserFunctions userFunction = new UserFunctions(); 
    JSONObject json = userFunction.registerUser(fname, lname, email, uname, password); 

     return json; 


    } 
    @Override 
    protected void onPostExecute(JSONObject json) { 
    /** 
    * Checks for success message. 
    **/ 
      try { 
       if (json.getString(KEY_SUCCESS) != null) { 
        registerErrorMsg.setText(""); 
        String res = json.getString(KEY_SUCCESS); 

        String red = json.getString(KEY_ERROR); 

        if(Integer.parseInt(res) == 1){ 
         pDialog.setTitle("Getting Data"); 
         pDialog.setMessage("Loading Info"); 

         registerErrorMsg.setText("Successfully Registered"); 


         DatabaseHandler db = new DatabaseHandler(getApplicationContext()); 
         JSONObject json_user = json.getJSONObject("user"); 

         /** 
         * Removes all the previous data in the SQlite database 
         **/ 

         UserFunctions logout = new UserFunctions(); 
         logout.logoutUser(getApplicationContext()); 
         db.addUser(json_user.getString(KEY_FIRSTNAME),json_user.getString(KEY_LASTNAME),json_user.getString(KEY_EMAIL),json_user.getString(KEY_USERNAME),json_user.getString(KEY_UID),json_user.getString(KEY_CREATED_AT)); 
         /** 
         * Stores registered data in SQlite Database 
         * Launch Registered screen 
         **/ 

         Intent registered = new Intent(getApplicationContext(), Registered.class); 

         /** 
         * Close all views before launching Registered screen 
         **/ 
         registered.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
         pDialog.dismiss(); 
         startActivity(registered); 


          finish(); 
        } 

        else if (Integer.parseInt(red) ==2){ 
         pDialog.dismiss(); 
         registerErrorMsg.setText("User already exists"); 
        } 
        else if (Integer.parseInt(red) ==3){ 
         pDialog.dismiss(); 
         registerErrorMsg.setText("Invalid Email id"); 
        } 

       } 


        else{ 
        pDialog.dismiss(); 

         registerErrorMsg.setText("Error occured in registration"); 
        } 

      } catch (JSONException e) { 
       e.printStackTrace(); 


      } 
     }} 
    public void NetAsync(View view){ 
     new NetCheck().execute(); 
    }} 
+0

大多数'UserFunctions.registerUser(....)'方法返回'null'。 – Titus

回答

0

NullPointerException在这条线意味着你json对象等于为null。 所以你需要检查它是否不等于null,然后试图从中获得一些价值。