2010-11-15 60 views
0

我想從http://code.google.com/p/iosched/source/checkout瞭解一些事情。我想看看他們是如何實現他們在I/O上討論的UI模式的。意向開始於Android的幫助

HomeActivity他們使用此代碼來火了NotesActivity

/* Launch list of notes user has taken*/ 
public void onNotesClick(View v) { 
    startActivity(new Intent(Intent.ACTION_VIEW, Notes.CONTENT_URI)); 
} 

票據類是ScheduleContract類,它看起來像:

public static class Notes implements NotesColumns, BaseColumns { 
    public static final Uri CONTENT_URI = 
      BASE_CONTENT_URI.buildUpon().appendPath(PATH_NOTES).build(); 
    public static final Uri CONTENT_EXPORT_URI = 
      CONTENT_URI.buildUpon().appendPath(PATH_EXPORT).build(); 

    /** {@link Sessions#SESSION_ID} that this note references. */ 
    public static final String SESSION_ID = "session_id"; 

    /** Default "ORDER BY" clause. */ 
    public static final String DEFAULT_SORT = NotesColumns.NOTE_TIME + " DESC"; 

    public static final String CONTENT_TYPE = 
      "vnd.android.cursor.dir/vnd.iosched.note"; 
    public static final String CONTENT_ITEM_TYPE = 
      "vnd.android.cursor.item/vnd.iosched.note"; 

    public static Uri buildNoteUri(long noteId) { 
     return ContentUris.withAppendedId(CONTENT_URI, noteId); 
    } 

    public static long getNoteId(Uri uri) { 
     return ContentUris.parseId(uri); 
    } 
} 

我不能看到這段代碼究竟做了什麼,以及它是如何結束的,並且啓動了NotesActivity並加載了筆記。我也不知道d是什麼URI用作新的第二個參數:
意圖(Intent.ACTION_VIEW,Notes.CONTENT_URI)。
我在Google上搜索瞭解釋,但沒有找到簡單的例子。我猜Notes類是用來指向和格式化數據(註釋),然後以某種方式NotesActivity開始,但不明白如何。

回答

0

在Android中,您永遠不會啓動特定的應用程序,至少不會直接啓動。你做什麼,是你創造一個Intent,這是an abstract description of an operation to be performed

意圖提供了一個工具用於 進行後期運行在不同的 應用程序的代碼之間的結合 。其最重要的用途 正在開展活動, 它可以被認爲是活動之間的膠水 。它基本上是一個 被動數據結構,其中包含一個 抽象描述的動作,執行到 。的 信息中的意圖初級件是:

  • 動作 - 被執行以 一般操作,如 ACTION_VIEWACTION_EDITACTION_MAIN

  • 數據 - 要操作的數據, ,例如 聯繫人數據庫中的人員記錄,表示爲 Uri

每當你想啓動其他應用程序,發送短信,選擇聯繫人,啓動相機等,你只需要創建和啓動Intent,然後安卓本身斷定哪些應用它應該發射。

所以對於與Notes活動的例子:

startActivity(new Intent(Intent.ACTION_VIEW, Notes.CONTENT_URI)); 

第一個參數,Intent.ACTION_VIEW,告訴這個Intet顯示的東西給用戶。第二個參數Notes.CONTENT_URI是Notes活動的統一資源標識符(在您的示例中,如果要使用特定註釋打開該活動,則URI也可以包含一個ID)。結果是Notes活動顯示給用戶。

如果你需要更多信息,我建議閱讀有關Android Application FundamentalsIntents and Intent Filters,這說明這些概念詳細

+0

謝謝,我使用連接意向的基礎知識。在我上面的例子中,他們使用內容提供者,URI指向存儲在該提供者中的註釋。 – 2010-11-15 13:44:56