我一直试图修复这个bug 3-4个小时,我真的不知道还有什么可以尝试...
以下是该计划应如何运作:
当设置闹钟时,它会熄灭并要求JSON解析器类获取一些数字。
JSONParser类正是这样做的,当我将结果放入对象并尝试更新数据库时,什么也没发生。
JSONParser返回带有数字的字符串,表示它实际上做了它应该做的事情,并且数据库也可以在不同的方法中正常工作。
正因为如此,我怀疑我对这个对象的引用不好,这就是这个不起作用的原因,但我看不出任何错误......这是代码:< / p>
警报类(从数据库中提取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);
}
谢谢!
答案 0 :(得分:0)
因此,显然,方法名称commit
在java中使用,如果您将方法命名为完全相同,则Eclipse不会显示任何警告或错误。
所以方法名称是我面临的问题......