2012-11-24 38 views

回答

0

我在android日曆源中找到了這段代碼。我不確定爲什麼它會檢查所有三個屬性,我相信後兩個屬性只有在它們出現在由RRULE定義的規則中時才能被定義。任何人都在意解釋?

public static boolean isRecurrenceEvent(ContentValues values) { 
    return (!TextUtils.isEmpty(values.getAsString(Events.RRULE))|| 
      !TextUtils.isEmpty(values.getAsString(Events.RDATE))|| 
      !TextUtils.isEmpty(values.getAsString(Events.ORIGINAL_EVENT))); 
    } 
1

1.How我可以告訴這行表示佔位符,哪些是唯一的,單一的事件?

要檢測單個非經常性事件,您將更容易查詢CalendarContacts.Events並查找重複性列爲空的事件。如果它們出現在由RRULE

假,RDATE和RRULE定義的規則是完全相互獨立的

2.後兩種只能定義。見4.6.1 Event Component

 ; the following are optional, 
     ; and MAY occur more than once 

     attach/attendee/categories/comment/
     contact/EXDATE/ EXRULE/ rstatus/related/
     resources/RDATE/RRULE/x-prop  

3.Anyone護理解釋?

RRULE指定了一個循環模式。
雖然RDATE指定了一組重複的日期時間。

查看4.8.5 Recurrence Component Properties的正式定義和示例。

事實上,它們甚至可以共存在一起:

說明:這一屬性[RDATE]可以用「RRULE」屬性來定義的集合組重複出現的內容一起顯示。當它們都出現在iCalendar對象中時,循環事件由「RDATE」和「RRULE」定義的事件聯合定義。

所以函數基本上說:「如果任何列不爲空,則返回true」。

+0

我回頭再看4.8.5。實際上,我認爲規範對於RDATE是否可以在沒有RRULE的情況下發生模糊不清。這可能是因爲您可以指定一個開始日期,然後指定一個RDATES的arbrary集合,這實際上是一個單一事件的集合。因此,我認爲如果定義了RDATE *或* RRULE,那麼安全的解決方案就是考慮一個重複發生的事件。感謝您幫助我深入瞭解這一點。 –

+0

是的,'isRecurrenceEvent'完全可以檢測到,再加上一點。請勾選它,如果它解決了您的問題= D –

相關問題