2015-03-25 1 views
1

Я пытался исправить эту ошибку в течение 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); 
    }    

Спасибо!

ответ

0

Так, по-видимому, имя метода commit используется в java, и Eclipse не показывает никаких предупреждений или ошибок, если вы случайно назовете свой метод точно так же.
Так имя метода было проблемой, с которой я столкнулся ...