我已经为我的应用程序开发了登录和登记活动,但是当我单击或注册以存储数据库中的输入时,该应用程序崩溃了,给出了错误以下> >。
我在这里和其他地方都检查了类似的错误,但是没有一个给我所寻找的东西,这是精确的解决方案。我希望得到一个。
03-16 00:19:33.783 32002-32002/com.example.lecevaluation E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.lecevaluation, PID: 32002
java.lang.NullPointerException
at com.example.lecevaluation.RegisterActivity.submitForm(RegisterActivity.java:91)
at com.example.lecevaluation.RegisterActivity.access$000(RegisterActivity.java:26)
at com.example.lecevaluation.RegisterActivity$1.onClick(RegisterActivity.java:61)
at android.view.View.performClick(View.java:4508)
at android.view.View$PerformClick.run(View.java:18675)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5590)
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:1280)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1096)
at dalvik.system.NativeStart.main(Native Method)
当我单击"登录"按钮时,会出现此错误。
03-16 00:23:51.875 3027-3027/com.example.lecevaluation E/LoginActivity: Login Error: java.net.ConnectException: failed to connect to /127.0.0.1 (port 443) after 2500ms: isConnected failed: ECONNREFUSED (Connection refused)
03-16 00:23:51.985 3027-3027/com.example.lecevaluation E/ViewRootImpl: sendUserActionEvent() mView == null
这是我的registrativity.java
package com.example.lecevaluation;
import android.app.ProgressDialog;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioGroup;
import android.widget.Toast;
import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.HashMap;
import java.util.Map;
public class RegisterActivity extends AppCompatActivity {
private static final String TAG = "RegisterActivity";
private static final String URL_FOR_REGISTRATION = "http://127.0.0.1/android_login/register.php";
ProgressDialog progressDialog;
private EditText SignupInputFirstName,SignupInputLastName,SignupInputRegNo, SignupInputEmail, SignupInputPassword;
private Button btnSignup;
private Button btnLinkLogin;
private RadioGroup genderRadioGroup;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
//To avoid auto popping of the keyboard
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
//process Dialog
progressDialog = new ProgressDialog(this);
progressDialog.setCancelable(false);
SignupInputFirstName = (EditText) findViewById(R.id.signup_input_FirstName);
SignupInputLastName = (EditText) findViewById(R.id.signup_input_LastName);
SignupInputRegNo = (EditText) findViewById(R.id.signup_input_regNo);
SignupInputEmail = (EditText) findViewById(R.id.signup_input_email);
btnLinkLogin = (Button) findViewById(R.id.btn_link_login);
btnSignup = (Button) findViewById(R.id.btn_signup);
genderRadioGroup = (RadioGroup) findViewById(R.id.gender_radio_group);
btnSignup.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
submitForm();
}
});
btnLinkLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(getApplicationContext(),MainActivity.class);
startActivity(i);
}
});
}
private void submitForm(){
int selectedId = genderRadioGroup.getCheckedRadioButtonId();
String gender;
if (selectedId == R.id.female_radio_btn)
gender = "Female";
else
gender = "Male";
registerUser(
SignupInputFirstName.getText().toString(),
SignupInputLastName.getText().toString(),
SignupInputRegNo.getText().toString(),
SignupInputEmail.getText().toString(),
gender,
SignupInputPassword.getText().toString());
}
private void registerUser(final String first_name, final String last_name,final String reg_no,
final String email, final String password, final String gender){
//Tag used to cancel the request
String cancel_req_tag = "register";
progressDialog.setMessage("Registering you...");
showDialog();
StringRequest strReq = new StringRequest(Request.Method.POST,
URL_FOR_REGISTRATION, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.d(TAG, "Response: " + response.toString());
hideDialog();
try {
JSONObject jObj = new JSONObject(response);
boolean error = jObj.getBoolean("error");
if (!error) {
String user = jObj.getJSONObject("user").getString("first_name");
Toast.makeText(getApplicationContext(), "Hello " + user + ", You are successfully Registered!", Toast.LENGTH_SHORT).show();
// Launch login activity
Intent intent = new Intent(
RegisterActivity.this,
MainActivity.class);
startActivity(intent);
finish();
} else {
String errorMsg = jObj.getString("error_msg");
Toast.makeText(getApplicationContext(),
errorMsg, Toast.LENGTH_LONG).show();
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e(TAG,"Registration Error: " + error.getMessage());
Toast.makeText(getApplicationContext(),
error.getMessage(), Toast.LENGTH_LONG).show();
hideDialog();
}
}) {
@Override
protected Map<String, String> getParams() {
// Posting params to register url
Map<String, String> params = new HashMap<String, String>();
params.put("F_name", first_name);
params.put("L_name", last_name);
params.put("reg_no", reg_no);
params.put("email", email);
params.put("password", password);
params.put("gender", gender);
return params;
}
};
//Adding request to request queue
AppSingleton.getInstance(getApplicationContext()).addToRequestQueue(strReq, cancel_req_tag);
}
private void showDialog(){
if (!progressDialog.isShowing())
progressDialog.show();
}
private void hideDialog(){
if (progressDialog.isShowing())
progressDialog.dismiss();
}
}
这是我的登录页面,mainActivity.java
package com.example.lecevaluation;
import android.app.ProgressDialog;
import android.content.Intent;
import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.HashMap;
import java.util.Map;
public class MainActivity extends AppCompatActivity {
private static final String TAG = "LoginActivity";
private static final String URL_FOR_LOGIN = "https://127.0.0.1/android_login/login.php";
/**
* the url is C:xampp/htdocsandroid_loginlogin.php
*/
ProgressDialog progressDialog;
private EditText loginInputregNo, loginInputPassword;
private Button btnlogin;
private Button btnLinkSignup;
TextView textView;
int counter = 3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
loginInputregNo = (EditText) findViewById(R.id.login_input_regNo);
loginInputPassword = (EditText) findViewById(R.id.login_input_password);
btnlogin = (Button) findViewById(R.id.btn_login);
btnLinkSignup = (Button) findViewById(R.id.btn_link_signup);
textView = (TextView)findViewById(R.id.textView3);
textView.setVisibility(View.GONE);
//Progress Dialog
progressDialog = new ProgressDialog(this);
progressDialog.setCancelable(false);
//To avoid auto popping of the keyboard
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
btnlogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
loginUser(loginInputregNo.getText().toString(),
loginInputPassword.getText().toString());
}
});
btnLinkSignup.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(getApplicationContext(), RegisterActivity.class);
startActivity(i);
}
});
}
private void loginUser(final String reg_no, final String password){
//Tag used to cancel the request
String cancel_req_tag = "login";
progressDialog.setMessage("Logging you in ...");
showDialog();
StringRequest strReq = new StringRequest(Request.Method.POST,
URL_FOR_LOGIN, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.d(TAG, "Register Response: " + response.toString()
);
hideDialog();
try {
JSONObject jObj = new JSONObject(response);
boolean error = jObj.getBoolean("error");
if (!error){
String User = jObj.getJSONObject("user").getString("reg_no");
/**
* Launch User Activity
* Reached Here
*/Intent intent = new Intent(
MainActivity.this,
UserActivity.class);
intent.putExtra("reg_no" //or regNo or username
, User);
startActivity(intent);
finish();
} else {
String errorMsg = jObj.getString("error_msg");
Toast.makeText(getApplicationContext(),
errorMsg, Toast.LENGTH_LONG).show();
textView.setVisibility(View.VISIBLE);
textView.setBackgroundColor(Color.RED);
counter--;
textView.setText(Integer.toString(counter));
if (counter == 0) {
btnlogin.setEnabled(false);
}
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e(TAG, "Login Error: " + error.getMessage());
Toast.makeText(getApplicationContext(),
error.getMessage(), Toast.LENGTH_LONG).show();
hideDialog();
}
}) {
@Override
protected Map<String, String> getParams() {
// Posting params to login url
Map<String, String> params = new HashMap<String, String>();
params.put("reg_no", reg_no);
params.put("password", password);
return params;
}
};
// Adding request to request queue
AppSingleton.getInstance(getApplicationContext()).addToRequestQueue(strReq,cancel_req_tag);
}
private void showDialog() {
if (!progressDialog.isShowing())
progressDialog.show();
}
private void hideDialog() {
if (progressDialog.isShowing())
progressDialog.dismiss();
}
}
对将来面临此错误的任何人,我在寻找一个小时后得到了解决方案。
下面的错误是URL连接问题的结果。
java.net.ConnectException: failed to connect to /127.0.0.1 (port 443) after 2500ms: isConnected failed: ECONNREFUSED (Connection refused)
如果您使用的是本地服务器,请确保URL中的IP地址与您连接的IP地址相同。
- 用于Windows的使用:
ipconfig
- 用于任何debian分销用途:
ifconfig
对于URL,在您的Java活动中,请确保它是 http 不是 https
示例;
private static final String URL_FOR_REGISTRATION = "http://192.168.168.1/android_login/register.php";
希望有帮助。它对我有用。