2016-02-22 45 views
0

我正在保存一個事件。當我點擊保存時,我想檢查標題是否爲空,開始時間等於結束時間和劑量事件重疊,然後保存事件。去哪兒打完()?

我有一個布爾變量來檢查編輯模式是否爲真。如果這是真的,我想更新現有的事件。

現在我試圖做到這一點,但是當我保存事件時,我想檢查所有這些情況並顯示快餐欄,然後完成活動。

1)但是現在,只要點擊保存,活動就會完成。

2)另外當我想更新它顯示事件存在。

這裏有什麼問題?

save.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      eventTitle = title.getText().toString(); 
      location = mAutocompleteView.getText().toString(); 


      if (eventTitle.length() == 0) { 

       showAlert("Title can not be empty."); 

      } 
      else if (startTime.equals(endTime)) { 
       showAlert("End Time can not be same as Start Time."); 
      } 

      else if (db.doesEventOverlap(startTime,endTime,dayOfWeek)) { 

       showAlert("Event Exists"); 

      } 

      else { 

       if (editMode) { 

       eventData.setTitle(title.getText().toString()); 
       eventData.setFromDate(fromDate); 
       eventData.setToDate(toDate); 
       eventData.setDayOfWeek(selectDay.getText().toString()); 
       eventData.setLocation(mAutocompleteView.getText().toString()); 
       eventData.setNotificationTime(notificationTime); 

        db.updateEvent(eventData); 

        Toast.makeText(getApplicationContext(),"Event Updated",Toast.LENGTH_SHORT).show(); 
       } 

       else { 
         db.addEvent(new EventData(eventTitle, startTime, endTime, dayOfWeek, location, notificationTime, mColor)); 
         showAlert("Event Added."); 
       } 

       setResult(RESULT_OK, i); 
       finish(); 
      } 
     } 
    }); 

劑量事件的重疊功能:

 boolean doesEventOverlap(String startTime, String endTime, String day) { 
    String selectQuery = "SELECT COUNT(*) FROM " + TABLE + " WHERE " + KEY_DAY_OF_WEEK + " = '" + day + "'" + " AND " 

      + "(" + KEY_FROM_DATE + " < '" + startTime 
      + "' AND '" + startTime + "' < " + KEY_TO_DATE + ") OR " 

      + " (" + KEY_FROM_DATE + " < '" + endTime 
      + "' AND '" + endTime + "' < " + KEY_TO_DATE + ") OR " 

      + " (" + KEY_FROM_DATE + " < '" + startTime 
      + "' AND '" + endTime + "' < " + KEY_TO_DATE + ") OR " 

      + " ('" + startTime + "' < " + KEY_FROM_DATE 
      + " AND " + KEY_TO_DATE + " < '" + endTime + "')"; 


    SQLiteDatabase db = this.getWritableDatabase(); 
    Cursor cursor = db.rawQuery(selectQuery, null); 

    if (cursor.moveToFirst()) { 
     do { 
      EventData event = new EventData(); 
      return cursor.getInt(0) > 0; 
     } while (cursor.moveToNext()); 
    } 
    return false; 
} 

創建表

public void createTable(SQLiteDatabase db){ 
    String CREATE_EVENTS_TABLE = "CREATE TABLE " + TABLE_EVENTS + "(" 
      + KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," 
      + KEY_TITLE + " TEXT," 
      + KEY_FROM_DATE + " DATE," 
      + KEY_TO_DATE + " DATE," 
      + KEY_DAY_OF_WEEK + " TEXT," 
      + KEY_LOCATION + " TEXT," 
      + KEY_NOTIFICATION_TIME + " DATE," 
      + KEY_COLOR + " TEXT" + ")"; 

    db.execSQL(CREATE_EVENTS_TABLE); 
} 

謝謝。

編輯:爲小吃店

顯示警報方法。

public void showAlert(String alert){ 

    Snackbar.make(parentLayout, alert, Snackbar.LENGTH_LONG).show(); // Don’t forget to show! 

    Snackbar.setCallback(new Snackbar.Callback() { 
     @Override 
     public void onDismissed(Snackbar snackbar, int event) { 
      super.onDismissed(snackbar, event); 
      finish(); 
     } 

     @Override 
     public void onShown(Snackbar snackbar) { 
      super.onShown(snackbar); 
     } 
    } 
} 
+0

請提供您的堆棧跟蹤..... – Opiatefuchs

回答

1

如果使用的是小吃吧,你可以使用Snackbar.Callback接口時,小吃吧辭退聽,然後完成活動。

例子:

Snackbar snackbar = Snackbar.make(save, "Message", Snackbar.LENGTH_SHORT); 
     snackbar.setCallback(new Snackbar.Callback() { 
      @Override 
      public void onDismissed(Snackbar snackbar, int event) { 
       super.onDismissed(snackbar, event); 
       finish(); 
      } 

      @Override 
      public void onShown(Snackbar snackbar) { 
       super.onShown(snackbar); 
      } 
     }); 

編輯:。

Snackbar snackbar = Snackbar.make(parentLayout, alert, Snackbar.LENGTH_LONG); 

     snackbar.setCallback(new Snackbar.Callback() { 
      @Override 
      public void onDismissed(Snackbar snackbar, int event) { 
       super.onDismissed(snackbar, event); 
       finish(); 
      } 

      @Override 
      public void onShown(Snackbar snackbar) { 
       super.onShown(snackbar); 
      } 
     }); 

     snackbar.show(); // Don’t forget to show! 
+0

它的示值誤差的非靜態方法不能從靜態上下文中引用@奧克塔維亞諾太子 – user5881997

+0

哪裏你把這個聲明放在哪裏? –

+0

我已經創建了快餐欄的方法。請檢查編輯的問題。 – user5881997