вот мой код:
этим методом я отправляю некоторые данные на мой сервер API
, если данные получены успешно success
переменная будет истинной внутри onResponse
метод
private boolean success=false;
public boolean commit(){
requestHandler.insertFields(tableName,values).enqueue(new Callback<DatabaseModel>() {
@Override
public void onResponse(Call<DatabaseModel> call,
Response<DatabaseModel> response) {
if (response.isSuccessful())
Log.i("debug8","result is:"+response.body().toString());
else
Log.e("debug8","error in server response:"+response.toString());
success=true;
}
@Override
public void onFailure(Call<DatabaseModel> call, Throwable t) {
Log.e("tempo",t.getMessage());
}
});
return success;//returns false before finishing the request
}
и в своей деятельности я хочу проверить результат следующим образом:
Database db=new Database("cars");
db.put("field1","val1")
.put("field2","val2");
if(db.commit())
Toast.makeText(this, "data inserted successfully", Toast.LENGTH_SHORT).show();
else
Toast.makeText(this, "failed to insert new record", Toast.LENGTH_SHORT).show();
проблема состоит в том, что всегда результат метода фиксации равен false, поскольку код возвращает false до того, как метод ретрофитной очереди завершит свою работу
это хорошая идея сделать пользовательский слушатель или что-то подобное для этого?
заранее спасибо