Frammenti

Android 3.0 ha introdotto Frammenti, che mostra come supportare progettazioni più flessibili per le diverse dimensioni dello schermo disponibili su telefoni e tablet. Questo articolo illustra come usare Fragments per sviluppare applicazioni Xamarin.Android e come supportare frammenti nei dispositivi pre-Android 3.0 (livello API 11).

Panoramica dei frammenti

Le dimensioni dello schermo più grandi presenti nella maggior parte dei tablet hanno aggiunto un livello aggiuntivo di complessità allo sviluppo android, un layout progettato per lo schermo piccolo non funziona necessariamente per schermi più grandi e viceversa. Per ridurre il numero di complicazioni introdotte, Android 3.0 ha aggiunto due nuove funzionalità, Frammenti e Pacchetti di supporto.

I frammenti possono essere considerati come moduli dell'interfaccia utente. Consentono allo sviluppatore di dividere l'interfaccia utente in parti isolate e riutilizzabili che possono essere eseguite in attività separate. In fase di esecuzione, le attività decideranno quali frammenti usare.

I pacchetti di supporto erano originariamente denominati librerie di compatibilità e consentivano l'uso di frammenti nei dispositivi che eseguono versioni di Android prima di Android 3.0 (livello API 11).

Ad esempio, l'immagine seguente illustra come una singola applicazione usa frammenti in diversi fattori di forma del dispositivo.

Diagram of how fragments are used in Tablets and Handsets

Frammento A contiene un elenco, mentre il frammento B contiene i dettagli per un elemento selezionato nell'elenco. Quando l'applicazione viene eseguita su un tablet, può visualizzare entrambi i frammenti nella stessa attività. Quando la stessa applicazione viene eseguita su un portatile (con dimensioni dello schermo inferiori), i frammenti sono ospitati in due attività separate. Il frammento A e il frammento B sono gli stessi in entrambi i fattori di forma, ma le attività che le ospitano sono diverse.

Per aiutare un'attività a coordinare e gestire tutti questi frammenti, Android ha introdotto una nuova classe denominata FragmentManager. Ogni attività ha una propria istanza di per FragmentManager l'aggiunta, l'eliminazione e la ricerca di frammenti ospitati. Il diagramma seguente illustra la relazione tra frammenti e attività:

Diagram illustrating relationships between Activity, Fragment Manager, and Fragments

In alcuni casi, i frammenti possono essere considerati come controlli compositi o come mini-attività. Raggruppano parti dell'interfaccia utente in moduli riutilizzabili che possono quindi essere usati in modo indipendente dagli sviluppatori in Attività. Un frammento ha una gerarchia di visualizzazione, proprio come un'attività, ma, a differenza di un'attività, può essere condivisa tra le schermate. Le visualizzazioni differiscono dai frammenti in quanto i frammenti hanno il proprio ciclo di vita; le visualizzazioni non lo fanno.

Anche se l'attività è un host di uno o più frammenti, non è direttamente a conoscenza dei frammenti stessi. Analogamente, i frammenti non sono direttamente a conoscenza di altri frammenti nell'attività di hosting. Tuttavia, frammenti e attività sono a conoscenza di FragmentManager nella loro attività. Usando FragmentManager, è possibile che un'attività o un frammento ottenga un riferimento a un'istanza specifica di un frammento e quindi chiami i metodi su tale istanza. In questo modo, l'attività o i frammenti possono comunicare e interagire con altri frammenti.

Questa guida contiene una copertura completa su come usare frammenti, tra cui:

  • Creazione di frammenti : come creare un frammento e metodi chiave di base che devono essere implementati.
  • Gestione e transazioni dei frammenti: come modificare frammenti in fase di esecuzione.
  • Pacchetto di supporto Android: come usare le librerie che consentono l'uso di frammenti nelle versioni precedenti di Android.

Requisiti

I frammenti sono disponibili in Android SDK a partire dal livello API 11 (Android 3.0), come illustrato nello screenshot seguente:

Selecting the API level in the Android SDK Manager

I frammenti sono disponibili in Xamarin.Android 4.0 e versioni successive. Un'applicazione Xamarin.Android deve avere come destinazione almeno il livello API 11 (Android 3.0) o versione successiva per usare Frammenti. Il framework di destinazione può essere impostato nelle proprietà del progetto, come illustrato di seguito:

Setting the Target Framework API level in the Project Options

È possibile usare Frammenti nelle versioni precedenti di Android usando il pacchetto di supporto Android e Xamarin.Android 4.2 o versione successiva. Come eseguire questa operazione viene illustrata in modo più dettagliato nei documenti di questa sezione.