我對Java和Android Studio非常新穎。我正在創建一個登錄腳本,一切正常,但我需要設置一個變量爲false
或true
。 Java告訴我我無法更新變量,因爲我正在使用public void
。所以我正在努力解決這個問題,但它根本不工作。這是我的代碼Android Studio無法更新公共變量
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;
}
對不起,我的代碼長塊正在使用的變量,但它基本上更新valid
爲真或假。因爲我無法在我的if
聲明中做到這一點,所以我想爲什麼不設置變量並稍後檢查它是否設置爲1或0?然後相應地更新有效的布爾值。
沒有我迄今試過的作品,我出來的解決方案。我搜索了網頁,但找不到解釋爲什麼我無法更新該更新變量的任何內容,因此我可以在我的最後一條if
聲明中使用它。
你在標題中提到的公共變量在哪裏? –
它在這裏,抱歉它說私人,因爲我也試過,但它被設置爲公開。仍然不起作用。 public String errorNumber =「0」; – carlosx2
你的問題說你不能更新公共變量,但是你在代碼中顯示的是私有變量。 –