Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 应用程序在按下按钮时崩溃,我可以';t解释错误日志_Android - Fatal编程技术网

Android 应用程序在按下按钮时崩溃,我可以';t解释错误日志

Android 应用程序在按下按钮时崩溃,我可以';t解释错误日志,android,Android,以下代码用于我正在使用的应用程序的登录验证: public class Login extends AppCompatActivity implements View.OnClickListener{ private EditText inputemail; private EditText inputpassword; private Button btnlogin; private static final String LOGIN_URL = "http://wwww.example.co

以下代码用于我正在使用的应用程序的登录验证:

public class Login extends AppCompatActivity implements View.OnClickListener{
private EditText inputemail;
private EditText inputpassword;
private Button btnlogin;
private static final String LOGIN_URL = "http://wwww.example.com/foodify/login.php";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login);

    inputemail = (EditText)findViewById(R.id.input_email);
    inputpassword = (EditText)findViewById(R.id.input_password);
    btnlogin = (Button)findViewById(R.id.btn_login);
    btnlogin.setOnClickListener(this);

    Button aboutapp = (Button)findViewById(R.id.learnmore);
    aboutapp.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent learnmore = new Intent(Login.this, AboutApp.class);
            startActivity(learnmore);
        }
    });

   Button signup = (Button)findViewById(R.id.signupnow);
   signup.setOnClickListener(new View.OnClickListener() {
       @Override
       public void onClick(View v) {
           Intent signup = new Intent(Login.this, SignUp.class);
           startActivity(signup);
       }
   });

   Button ccode = (Button)findViewById(R.id.ccodebtn);
   ccode.setOnClickListener(new View.OnClickListener() {
       @Override
       public void onClick(View v) {
           Intent ccode = new Intent(Login.this, Confirmation_Sign_Up.class);
           startActivity(ccode);
       }
   });

   btnlogin.setOnClickListener(this);

}


@Override
public void onClick(View v){
   if(v == btnlogin){
       LoginUser();
   }
}

private void LoginUser() {
    String email = inputemail.getText().toString();
    String password = inputpassword.getText().toString();
    login(email,password);
}

private void login(String email, String password) {
    String urlSuffix = "?email="+email+"&password="+password;
   class LoginUser extends AsyncTask<String, Void, String> {
       ProgressDialog loading;

       @Override
       protected void onPreExecute() {
           super.onPreExecute();
           loading = ProgressDialog.show(Login.this, "Please Wait","Authenticating...", true, true);
       }

       @Override
       protected void onPostExecute(String s) {
           super.onPostExecute(s);
           loading.dismiss();
           Toast.makeText(getApplicationContext(), s, Toast.LENGTH_LONG).show();
           if (s.matches("Login successful")) {
               Intent regcom = new Intent();
               regcom.setClass(getApplicationContext(), main_menu.class);
               startActivity(regcom);
           }
       }
       @Override
       protected String doInBackground(String... params) {
           String s = params[0];
           BufferedReader bufferedReader = null;
           try {
               URL url = new URL(LOGIN_URL+s);
               HttpURLConnection con = (HttpURLConnection) url.openConnection();
               bufferedReader = new BufferedReader(new InputStreamReader(con.getInputStream()));
               String result;
               result = bufferedReader.readLine();
               return result;
           }catch(Exception e){
               return null;
           }
       }
   }
   LoginUser ru = new LoginUser();
   ru.execute(urlSuffix);
  }
}

我检查了login.php文件中的错误,没有发现任何错误。我真的不明白错误指的是什么,也不知道如何继续。如有任何建议,将不胜感激。:)

更改doInBackground的返回语句,如下所述

       @Override
       protected String doInBackground(String... params) {
           String s = params[0];
           BufferedReader bufferedReader = null;
           try {
               URL url = new URL(LOGIN_URL+s);
               HttpURLConnection con = (HttpURLConnection) url.openConnection();
               bufferedReader = new BufferedReader(new InputStreamReader(con.getInputStream()));
               String result;
               result = bufferedReader.readLine();
               return result;
           }catch(Exception e){
//             return null;
//             change this to 
               e.printStackTrace();
               return "Error in login";
           }
       }

打印异常将是检查它是否在其他地方失败的一个好主意。

java.lang.NullPointerException:如果您有NullPointerException,请尝试调用虚拟方法'boolean'。这应该是您在错误处理中了解到的第一件事。在某些情况下,doInBackground的可能副本返回null,然后尝试在
postExecute
中调用
.matches
。如果try语句中存在
postExecute
error中的s上的null检查,则添加。确保它工作正常。
       @Override
       protected String doInBackground(String... params) {
           String s = params[0];
           BufferedReader bufferedReader = null;
           try {
               URL url = new URL(LOGIN_URL+s);
               HttpURLConnection con = (HttpURLConnection) url.openConnection();
               bufferedReader = new BufferedReader(new InputStreamReader(con.getInputStream()));
               String result;
               result = bufferedReader.readLine();
               return result;
           }catch(Exception e){
//             return null;
//             change this to 
               e.printStackTrace();
               return "Error in login";
           }
       }