1
我一直在試圖解決這個bug 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);
}
謝謝!