Android Studio无法更新公共变量

时间:2016-03-15 21:17:32

标签: java android variables if-statement

我是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语句中使用它。

1 个答案:

答案 0 :(得分:1)

如果我没有弄错的话,你所做错的是你在方法中声明变量。这会导致在您到达方法结束时将其删除。有多种方法可以解决这个问题,我会给你两种方法。

  1. 您应该声明有效的&#39;,&#39;电子邮件&#39;和密码&#39;在每个方法之外的变量,在类的开头。这样,当您调用该方法时,无论您对变量所做的操作都会被保存。

  2. 您可以使validate()方法返回一个变量。例如,让方法返回&#39;有效&#39;变量然后你会得到有效的&#39;退出方法后。

  3. 编辑:只是想到3.你可以做到这一点。您可以创建一个单独的类,在validate()方法中创建一个对象并返回整个对象。这样你就可以获得所有3个变量,而无需为整个类声明它们。

    Public class email () {
        Boolean valid;
        String password;
        String email:
    }
    

    如果这个答案不可理解,请要求进一步澄清。如果需要,我也可以发布示例代码。