onResponse 布尔实例变量没有被设置?
onResponse boolean instance variable is not being set?
我有一个点击监听器,在那个点击监听器中,我有一个 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();
}
}
我还有一个默认设置为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 is set to " + mSuccess);
。现在,由于您还没有收到 onResponse()
的回复,所以 mSuccess
将保持不变(并且将为 false)。
我有一个点击监听器,在那个点击监听器中,我有一个 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();
}
}
我还有一个默认设置为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 is set to " + mSuccess);
。现在,由于您还没有收到 onResponse()
的回复,所以 mSuccess
将保持不变(并且将为 false)。