我是Java和Android Studio的新手。我正在创建一个登录脚本,一切正常但我需要将变量设置为Male_turnover <-
Male_and_fulltime_turnover <-
Male_and_female_and_TypeA_and_parttime_turnover <-
或false
。 Java告诉我,我无法更新变量,因为我使用的是true
。所以我试图解决这个问题,但它根本不起作用。这是我的代码
public void
该变量正在以下方法中使用
public String errorNumber = "0";
对于长代码块感到抱歉,但它基本上将public boolean validate() {
boolean valid = true;
String email = _emailText.getText().toString().trim();
String password = _passwordText.getText().toString().trim();
final String Password = _passwordText.getText().toString().trim();
final String Email = _emailText.getText().toString().trim();
if (email.isEmpty() || !android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches()) {
_emailText.setError("Vul een geldige email in");
valid = false;
} else {
_emailText.setError(null);
}
if (password.isEmpty() || password.length() < 8 || password.length() > 20) {
_passwordText.setError("Vul een geldig wachtwoord in");
valid = false;
} else {
StringRequest stringRequest = new StringRequest(Request.Method.POST, REGISTER_URL,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
String[] output = response.split(":");
String output2 = output[2];
String[] setNumber = output[1].split(",");
String responseDetails1 = output2.replace("\"", "");
String responseDetails = responseDetails1.replace("}", "");
String responsNumber = setNumber[0];
Log.d("RESPONSE1", response);
Log.d("RESPONSE2", setNumber[0]);
Log.d("RESPONSE3", responseDetails);
if(responsNumber.equals("0")){
errorNumber = "0";
//Toast.makeText(login.this, responseDetails, Toast.LENGTH_LONG).show();
Log.d("THERE IS AN ERROR", responseDetails);
}else{
_passwordText.setError(null);
errorNumber = "1";
//Toast.makeText(login.this, responseDetails, Toast.LENGTH_LONG).show();
Log.d("LOGIN SUCCESS", responseDetails);
//Intent i = new Intent(login.this, login.class);
// startActivity(i);
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(login.this,error.toString(),Toast.LENGTH_LONG).show();
}
}){
@Override
protected Map<String,String> getParams(){
Map<String,String> params = new HashMap<>();
params.put(KEY_PASSWORD, Password);
params.put(KEY_USEREMAIL, Email);
return params;
}
};
RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(stringRequest);
}
Log.d("ERRORNUMBER", errorNumber);
if (errorNumber.equals("0")){
valid = false;
}
Log.v("VALID STATUS", ""+ valid);
return valid;
}
更新为true或false。因为我无法在valid
语句中执行此操作,所以我需要解决它,所以我想为什么不设置变量然后检查是否设置为1或0?然后相应地更新有效的布尔值。
到目前为止,我没有尝试过任何工作,而且我没有解决方案。我已经在网上搜索了但是我无法找到任何解释我为什么无法更新该更新变量的内容,因此我可以在我的上一篇if
语句中使用它。
答案 0 :(得分:1)
如果我没有弄错的话,你所做错的是你在方法中声明变量。这会导致在您到达方法结束时将其删除。有多种方法可以解决这个问题,我会给你两种方法。
您应该声明有效的&#39;,&#39;电子邮件&#39;和密码&#39;在每个方法之外的变量,在类的开头。这样,当您调用该方法时,无论您对变量所做的操作都会被保存。
您可以使validate()方法返回一个变量。例如,让方法返回&#39;有效&#39;变量然后你会得到有效的&#39;退出方法后。
Public class email () {
Boolean valid;
String password;
String email:
}
如果这个答案不可理解,请要求进一步澄清。如果需要,我也可以发布示例代码。