我有一個有趣的問題,我從未在編程之前遇到過。我有一個onClickListener,它執行了大量的用戶名和密碼檢查(確保用戶名長度適當,沒有被採取等)。我使用的是MobDB,而且我使用的條件語句會在用戶名已經存在的情況下返回一行。問題是監聽器跳過數據庫並進行最後的檢查,如果一切正常,請將新的用戶名和密碼發佈到我的數據庫中。在跳過上一次檢查前,如何讓它等待數據庫的響應?Android在完成語句之前沒有等待數據庫響應
下面是相關代碼:
usernamecheck3 = true;
MobDB.getInstance().execute(APP_KEY, null, rd, null, false, new MobDBResponseListener() {
@Override public void mobDBSuccessResponse() {
usernamecheck3 = false;
Log.e("mobdbSuccess:", "success");
}
@Override public void mobDBResponse(Vector<HashMap<String, Object[]>> row) {
}
@Override public void mobDBResponse(String jsonObj) {
/*Log.e("mobdbSuccess:", "jsonObj");
Log.e("mobdbSuccess:", jsonObj);
JSONObject mainObject;
try {
mainObject = new JSONObject(jsonObj);
// need to parse the json object.
} catch (JSONException e1) {
e1.printStackTrace();
} */
}
@Override public void mobDBFileResponse(String fileName, byte[] fileData) {
//get file name with extension and file byte array
}
@Override public void mobDBErrorResponse(Integer errValue, String errMsg) {
usernamecheck3 = false;
Log.e("doesnt", "work");
}
});
if(usernamecheck3 == false){
Toast.makeText(getApplicationContext(), "Username is taken, please choose another", Toast.LENGTH_SHORT).show();
}
基本上支票總是返回true,然後將logcat中說mobdbSuccess:成功,這應該已經設置了布爾爲false。
謝謝。