Я пытался исправить эту ошибку в течение 3-4 часов, и я действительно не знаю, что еще попробовать ...
Вот как программа должна работать:Возможно неправильная ссылка
Когда будильник установлен, он отключается и запрашивает класс парсера JSON для получения некоторых номеров.
Класс JSONParser делает именно это, и когда я помещаю результаты в объект и пытаюсь обновить базу данных, ничего не происходит.
JSONParser возвращает строку с числами, что указывает на то, что она фактически выполняет то, что она должна использовать, а также база данных работает правильно в разных методах.
Это связано с тем, что я подозреваю, что моя ссылка на объект не очень хорошая, и именно по этой причине это не работает, но я не вижу ошибок ... Вот код:
класссигнализации (где объект Ticket
взята из базы данных):
public void onReceive(Context context, Intent intent) {
/*acquire power service manager*/
PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,"TAG");
wl.acquire();
boolean boot = intent.getBooleanExtra("boot", false);
if(boot==true){
findTicketAndSetAlarm(context);
}
else{
Bundle b = intent.getBundleExtra("Bundle");
UUID id = UUID.fromString(b.getString("Key"));
DBHelper db = new DBHelper(context.getApplicationContext());
currentTicket = db.getTicket(id);
if(Global.isNetworkAvailable(context)){
JSONParser parser = new JSONParser(context, currentTicket,true,null);
parser.execute("http://www.millipiyango.gov.tr/sonuclar/cekilisler/sayisal/20150228.json");
}
else{
sendNotification(context,intent);
}
}
}
А вот JSONParser класс onPostExecute
метод:
@Override
protected void onPostExecute(String result) {
if(result == null){
if(mNotification)
Alarm.notifyUser(mContext, mTicket);
else
mActivity.notify(false);
}
else{
try {
int numbers[] = new int[6];
numbers = getJSON(numbers,result); //GETS the numbers from REST service
saveResultsToTicket(numbers);
String sResult = Global.getStringFromArray(numbers); //STRING WITH WORKING NUMBERS
if(mNotification)
Alarm.notifyUser(mContext, mTicket,sResult,mContext.getResources().getString(R.string.these_numbers_were_picked_));
else
mActivity.notify(true);
} catch (JSONException e) {
if(mNotification)
Alarm.notifyUser(mContext, mTicket);
else
mActivity.notify(false);
e.printStackTrace();
}
}
super.onPostExecute(result);
}
private void saveResultsToTicket(int[] numbers) {
mTicket.setResultNumbers(numbers);
ArrayList<Row> rows = new ArrayList<Row>();
rows = mTicket.getRows();
Iterator<Row> i = rows.iterator();
while(i.hasNext()){
Row r = i.next();
if((r.checkNumbers(numbers)).length >= 3){
mTicket.setWon(Global.WIN);
return;
}
}
mTicket.setWon(Global.LOSE);
commit();
}
private void commit() {
DBOperator dbOp = new DBOperator(mContext.getApplicationContext(), Global.UPDATE);
dbOp.execute(mTicket);
}
Спасибо!