我的代码是:
public class Register extends Activity {
// JSON Response node names
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;
Button btnRegister;
TextView registerErrorMsg;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
// Defining all layout items
inputFirstName = (EditText) findViewById(R.id.fname);
inputLastName = (EditText) findViewById(R.id.lname);
inputUsername = (EditText) findViewById(R.id.uname);
inputPassword = (EditText) findViewById(R.id.pword);
btnRegister = (Button) findViewById(R.id.register);
registerErrorMsg = (TextView)findViewById(R.id.register_error);
// Button which Switches back to the login screen on clicked
Button login = (Button) findViewById(R.id.bktologin);
login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(v.getContext(), LoginActivity.class);
startActivityForResult(i, 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 v) {
if ((!inputUsername.getText().toString().equals("")) && (!inputPassword.getText().toString().equals("")) && (!inputFirstName.getText().toString().equals("")) && (!inputLastName.getText().toString().equals("")) && (!inputEmail.getText().toString().equals(""))) {
Log.e(KEY_ERROR, "Pride do kle4");
if (inputUsername.getText().toString().length() > 4) {
Log.e(KEY_ERROR, "Pride do kle2");
NetAsync (v);
}
else {
Log.e(KEY_ERROR, "Pride do kle3");
Toast.makeText(getApplicationContext(),
"Username should be minimum 5 characters", Toast.LENGTH_SHORT).show();
}
} else {
Log.e(KEY_ERROR, "Pride do kle5");
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, Void, Boolean> {
private ProgressDialog nDialog;
@Override
protected void onPreExecute() {
super.onPreExecute();
nDialog = new ProgressDialog(Register.this);
nDialog.setMessage("Loadig...");
nDialog.setTitle("Checking Network");
nDialog.setIndeterminate(false);
nDialog.setCancelable(true);
nDialog.show();
}
@Override
protected Boolean doInBackground(String... args) {
// Gets current device state and checks for working internet connection by trying 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) {
e1.printStackTrace();
} catch (IOException e) {
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");
}
}
}
我收到此错误:
08-30 17:11:41.155 26407-26407/com.knedl.testloginapp W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x418adda0)
08-30 17:11:41.155 26407-26407/com.knedl.testloginapp E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.knedl.testloginapp, PID: 26407
java.lang.NullPointerException
at com.knedl.testloginapp.Register$2.onClick(Register.java:85)
at android.view.View.performClick(View.java:4640)
at android.view.View$PerformClick.run(View.java:19425)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:146)
at android.app.ActivityThread.main(ActivityThread.java:5593)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
at dalvik.system.NativeStart.main(Native Method)
答案 0 :(得分:2)
您的inputEmail
似乎未初始化。
答案 1 :(得分:1)
您忘记在以下代码中初始化inputEmail
// 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); // this is the line you are forgetting
inputPassword = (EditText) findViewById(R.id.pword);
btnRegister = (Button) findViewById(R.id.register);