gpt4 book ai didi

java - 解析 Android 中出现问题的查询

转载 作者:太空宇宙 更新时间:2023-11-04 13:32:08 25 4
gpt4 key购买 nike

嘿,大家好,我正在尝试使用解析查询从解析数据库中检索一个值,但是当我尝试从检查表中特定值是否存在的方法返回 boolean 值时,我不太理解程序的流程。这是代码:

public class UsersSignUp extends Activity {

Button btnxxx;
EditText edt;
Context mContext = this;
CheckInternetConnectivity checkInternetConnectivity;
String housenumber;
String objectid;
boolean b;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_xyyxyx);

btnxxx = (Button) findViewById(R.id.btnSignUp);
btnxxx.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
edt = (EditText) findViewById(R.id.txtHouse);
if (isValidHouseNum(edt.getText().toString())) {
Log.d("Bool Value 2:", edt.getText().toString());
String h=edt.getText().toString();
Log.d("Bool Value 2.1:", h);
b=checkIfRegistered(h);
Log.d("Check: ", String.valueOf(b));
}


else {
Animation shake = AnimationUtils.loadAnimation(UsersSignUp.this, R.anim.shake);
edt.startAnimation(shake);
Toast.makeText(getApplicationContext(), "Please enter valid house number!", Toast.LENGTH_LONG).show();
}
}
});
}

public boolean isValidHouseNum(String housenumber) {
boolean check;
if (housenumber.length() > 6 || housenumber.length() < 6) {
check = false;
} else {
check = true;
}

return check;
}


public boolean checkIfRegistered(String house_number)
{
ParseQuery<ParseObject> query2=ParseQuery.getQuery("SampleTable_123456");//Table Name in parse
query2.whereEqualTo("housenumber", house_number);
query2.getFirstInBackground(new GetCallback<ParseObject>() {
@Override
public void done(ParseObject parseObject, ParseException e) {
if (parseObject == null) {
Log.d("Message 1:", "Number not retreived");
b = false;
Log.d("Message 4:", String.valueOf(b));
} else {
Log.d("Message 2:", "Number Retrieved");
String number = parseObject.getString("housenumber");
b = true;
Log.d("Message 5:", String.valueOf(b));
Log.d("Message 2:", number);
}
}
});

Log.d("Message 3:", String.valueOf(b));
return b;
}

这是当我搜索的号码存在于数据库中时我收到的日志:

  • 值2::123456
  • 值2.1:: 123456
  • D/消息 3:: false
  • D/检查:: false
  • D/消息2::已检索号码
  • D/消息 5:: true
  • D/消息2:: 123456

虽然它应该首先返回 true,但在看到日志后它已经存在,但仍然非常困惑。帮帮我吧伙计们。

最佳答案

如果您调试此代码,您会发现在调用 getFirstInBackground 后,它将跳转到 Log.d("Message 3:", String.valueOf(b)) 语句,此时其 false

不返回任何值将您想要的任何内容放入done

query2.getFirstInBackground(new GetCallback<ParseObject>() {
@Override
public void done(ParseObject parseObject, ParseException e) {
if (parseObject == null) {
//null means number is not registered
// next step must be here if number not register dont return any value



} else {
//number is registerd so print toast here
}
}
});

关于java - 解析 Android 中出现问题的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32065569/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com