java - onResponse boolean 实例变量未设置?

标签 java android json boolean response

我有一个点击监听器,在该点击监听器中,我有一个 if, else 语句,如下所示

  @Override
        public void onClick(View v) {
            postMethodRegister();
            System.out.println("mSuccess is set to " + mSuccess);
            if (mSuccess) {
                Intent login = new Intent(Login.this, MainActivity.class);
                startActivity(login);
            }else{
                Toast toast = Toast.makeText(getApplicationContext(), "Please Check your UserName or Password", Toast.LENGTH_LONG);
                toast.setGravity(Gravity.CENTER | Gravity.CENTER_HORIZONTAL, 0, 0);
                toast.show();
            }
        }

我还有一个 boolean 变量,默认设置为 false,私有(private) boolean 值 mSuccess;如果执行 onResponse,我将其设置为 true,否则我将其设置为 false 并执行适当的响应,但由于某种原因,第一次尝试登录时会运行 onResponse,但当它到达 onClick mSuccess 时,它会设置为false 这是怎么回事? mSuccess 是一个实例变量。

 public void postMethodRegister() {
    StringRequest request = new StringRequest(Request.Method.POST, loginUrl, new Response.Listener<String>() {
        @Override
        public void onResponse(String response) {
            System.out.println("On Response was thrown in Login"+response);
            mSuccess=true;
        }

    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            System.out.println("Error was thrown in Login" + error.getMessage()+"and the response code is ");
            mSuccess=false;

        }
    })

最佳答案

postMethodRegister() 方法发出异步请求。

因此,当您单击按钮时,将调用 onClick() ,进而调用 postMethodRegister() 。 然后 postMethodRegister() 发出一个异步网络请求,这意味着您的网络请求将在另一个线程中运行,然后您的控件将立即移动到 postMethodRegister() 之后的下一行,即System.out.println("mSuccess 设置为 "+ mSuccess);.现在,由于您尚未收到 onResponse() 的响应,因此 mSuccess 将保持不变(并且为 false)。

关于java - onResponse boolean 实例变量未设置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36725647/

相关文章:

java - 当 Java 属性文件中有重复键时会发生什么?

java - 线程在倒计时时卡住 UI

java - CommandLineRunner 和 Springboot 与 Hibernate 的问题 - 无法初始化代理 session - 无 session

android - 以编程方式设置 ActionMode 背景

android - 从市场安装后,apk 文件中的代码去了哪里?

ios - JSON 字符串编码 - 混淆

java - 使用其他类的数组列表和适配器

android - react-native-google-signIn 没有得到 IDToken

json - 如何将行合并到 Spark 数据框的列中作为有效的json以将其写入mysql

arrays - 从 jsonb_array_elements 或 jsonb_to_recordset 获取 row_number