2010-11-15 16 views
0

J'essaie d'apprendre quelques choses de http://code.google.com/p/iosched/source/checkout. Je voulais voir comment ils ont implémenté les modèles d'interface utilisateur dont ils parlaient sur les E/S.Aide avec intention à partir de Android

Dans le HomeActivity ils utilisent ce code pour lancer le NotesActivity:

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

Remarques classe est dans la classe ScheduleContract et il ressemble à:

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); 
    } 
} 

Je ne peux pas voir que fait exactement ce code, et comment il finit par démarrer NotesActivity avec des notes chargées po Je ne comprends pas non plus comment un d pour ce qui est URI utilisé comme deuxième paramètre dans new:
Intent (Intent.ACTION_VIEW, Notes.CONTENT_URI).
J'ai cherché sur Google pour l'explication, mais je n'ai pas réussi à trouver des exemples simples et simples. Je suppose que Notes classe est utilisé pour pointer vers et formater les données (notes) et puis en quelque sorte NotesActivity est démarré, mais ne comprends pas exactement comment.

Répondre

0

Dans Android, vous ne lancez jamais une application spécifique, du moins pas directement. Ce que vous faites, est que vous créez un Intent, qui est an abstract description of an operation to be performed:

Une intention fournit une installation pour effectuer l'exécution la liaison tardive entre le code dans différentes applications . Son utilisation la plus significative est dans le lancement des activités, où il peut être considéré comme la colle entre les activités. Il s'agit essentiellement d'une structure de données passive contenant une description abstraite d'une action à . Les pièces principales de informations dans l'intention sont:

  • l'action - L'action générale être effectuée, comme ACTION_VIEW, ACTION_EDIT, ACTION_MAIN, etc.

  • données - Les données à utiliser, comme un enregistrement de personne dans la base de données de contacts , exprimée en Uri.

Chaque fois que vous voulez lancer une autre application, envoyer un message texte, choisissez un contact, activer l'appareil photo, etc, que vous venez de créer et de démarrer Intent, puis figures que Android par elle-même quelle application il se doit lancement.

Donc, pour votre exemple avec l'activité Notes:

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

Le premier paramètre, Intent.ACTION_VIEW, indique que cette Intet affichera quelque chose à l'utilisateur. Le deuxième paramètre, Notes.CONTENT_URI, est l'identificateur de ressource uniforme pour l'activité Notes (dans votre exemple, l'URI peut également inclure un ID si vous souhaitez ouvrir l'activité avec une note spécifique). Le résultat est que l'activité Notes est affichée pour l'utilisateur.

Si vous avez besoin de plus amples informations, je vous suggère de lire à propos Android Application Fundamentals et Intents and Intent Filters, qui expliquent ces concepts en détail

+0

Merci, je connecté les bases d'intention d'utiliser. Dans mon exemple ci-dessus, ils utilisent le fournisseur de contenu et l'URI pointe vers les notes stockées dans ce fournisseur. –