Hjem Sosiale medier Slik bruker du fragmenter til å programmere din Android App - dummies

Slik bruker du fragmenter til å programmere din Android App - dummies

Video: Learning iOS: Create your own app with Objective-C! by Tianyu Liu 2024

Video: Learning iOS: Create your own app with Objective-C! by Tianyu Liu 2024
Anonim

Brukergrensesnittet i Android-appeksemplet som brukes her, har tre paneler - en liste over elementer, et detaljpanel som beskriver hvilket element som er valgt i listen, og et detaljer-i-dybde panel. På en liten smarttelefon skjerm, kan hvert panel være en egen aktivitet. Men en tavleskjermer i liggende modus har plass til flere enn ett panel.

Bildet under viser denne appen med to av de tre panelene. Panelet til venstre viser en liste over Android SDK-komponenter. Panelet til høyre viser en beskrivelse av hvilken komponent som er valgt i listen til venstre. (Beskrivelsen er egentlig de første setningene i komponentens SDK-dokumentasjon.) Dette detaljer-på-høyre mønsteret er en del av mange brukergrensesnitt.

To fragmenter knyttet til en aktivitet.

For å lage skjermbildet, bygger du en aktivitet. Aktiviteten har to fragmenter - et fragment til venstre og et annet til høyre. Det venstre panelet viser det samme fragmentet i løpet av appen, slik at du kan deklarere det fragmentet i aktivitetens layoutfil. Det høyre panelet viser ett fragment om gangen, men fragmentet endres i løpet av appen. Så du erklærer en rammeoppsett i høyre panel.


I koden ovenfor deler android: layout_ uansett attributter opp skjermen i to halvdeler - en halv for fragmentelementet og den andre halvdelen for FrameLayout-elementet. Strategien med disse attributter er å starte ved å tildele et minimum på null piksler for hvert element. Selvfølgelig betyr nullpiksler ingen bredde i det hele tatt (som er den samme som usynlig). For å holde de to halvdelene av oppsettet usynlig, tilordne lik nullverdier til de to halvdelene. Med ikke-null vektverdier, utvides hver halvdel for å fylle ledig plass i oppsettet.

Bruken av fragmentets fullt kvalifiserte klassenavn (com. Allmycode. Frag. ComponentNamesFragment) er forsettlig. Et forkortet navn (som. ComponentNamesFragment) vil ikke kutte sennep.

Hvis du lurer på, er Android-innebygde detaljerElementBackground et jevnt utseende for ting som den høyre halvdelen (ting som viser detaljer om et element som brukeren har valgt).

Appens hovedaktivitetskode er imponerende uinteressant.

pakke com. allmycode. frag; importere android. app. Aktivitet; importere android. os. Bunt; offentlig klasse AllPurposeActivity utvider Aktivitet {@Override protected void onCreate (Bundle savedInstanceState) {super. onCreate (savedInstanceState); setContentView (R.oppsett. hoved);}}

Koden nedenfor inneholder klassen ComponentNamesFragment. På grunn av oppsettet i det første eksemplet, installerer Android et ComponentNamesFragment på venstre side av enhetens skjerm.

pakke com. allmycode. frag; importere android. app. FragmentManager; importere android. app. FragmentTransaction; importere android. app. ListFragment; importere android. os. Bunt; importere android. utsikt. Utsikt; importere android. widget. ArrayAdapter; importere android. widget. Listevisning; offentlig klasse ComponentNamesFragment utvider ListFragment {endelig statisk streng [] COMPONENTS = {"Activity", "Service", "BroadcastReceiver", "ContentProvider"}; @Override public void onActivityCreated (Bundle savedInstanceState) {super. onActivityCreated (savedInstanceState); SetListAdapter (newAviceAdaptor (GetActivity (), android.Reformat. simple_list_item_1, COMPONENTS))} @Override public void onListItemClick (Listevisning l, Vis v, int indeks, lang id) {// Opprett fragment med indeks DocsFragment docsFragment = ny DocsFragment (); Bundle args = Helper. getBundleWithIndex (index); docsFragment. setArguments (args); // Fjern ryggstakken FragmentManager fragmentManager = getFragmentManager (); int backStackEntryCount = fragmentManager. getBackStackEntryCount (); for (int i = 0; i 

Klassen i koden ovenfor utvider Android's ListFragment-klasse. En ListFragment er et fragment som viser en liste. Tidlig i fragmentets livssyklus setter koden i eksemplet ovenfor en listeadapter (mer spesifikt en ArrayAdapter) for fragmentet. Så hvor tidlig er "tidlig"?

ArrayAdapter-konstruktørens første parameter er en kontekst. Men vent! I motsetning til en aktivitet er et fragment ikke en kontekst. Så du kan ikke bruke søkeordet dette til ArrayAdapter-konstruktørens første parameter.

Heldigvis har et fragment en getActivity-metode. Et kall til getActivity tar tak i aktiviteten som fragmentet er knyttet til. Så, for ArrayAdapter-konstruktørens første parameter, kan du ringe getActivity. Selvfølgelig kan du ikke ringe getActivity til fragmentet er knyttet til en eksisterende aktivitet. Derfor er fragmentets onActivityCreated-metode overstyrt ovenfor. Android samtaler onActivityCreated etter å ha vedlagt fragmentet og kalt aktivitetens onCreate-metode. Så alt fungerer som planlagt.

Android. app. Aktivitetsklassens besteforeldresklasse er android. innhold. Kontekst. Men android. app. Fragment klassens foreldre klasse er vanlig gammel java. Lang. Gjenstand. Derfor, i en aktivitets kode, refererer søkeordet til en kontekst. Men i et fragments kode refererer ikke søkeordet til en kontekst.

I eksemplet ovenfor har konstruktøren for ArrayAdapter tre parametere.

Den første parameteren er konteksten - den ekle parameteren som tvinger deg til å sette konstruktøren inne i onActivityCreated-metoden.

Den andre parameteren er simple_list_item_1 - en standard Android-oppsett.

Layoutet simple_list_item_ 1 skaper utseendet du ser på venstre side av bildet. Android har mange av disse standardoppsettene. For en oversikt over tilgjengelige layouter, besøk Android Developer-nettstedet.

Den tredje parameteren er samlingen av elementer som vil vises i listen.

I dette eksemplet kommer disse elementene fra COMPONENTS array, som er deklarert i samme eksempel.

Som en ListActivity har en ListFragment en onListItemClick-metode. Du kan svare på et klikk ved å jobbe med en DocsFragment, en FragmentTransaction og en FragmentManager:

DocsFragment representerer høyre side av bildet ovenfor.

En fragmenttransaksjon er en masse ting du gjør med fragmenter. For eksempel, å sette opp for å erstatte ett fragment med en annen er en transaksjon.

En fragment manager gjør hva navnet antyder. Den styrer fragmenters ankomster og avganger.

Slik bruker du fragmenter til å programmere din Android App - dummies

Redaktørens valg

10 Måter å varme opp og slappe av før og under GRE-dummies

10 Måter å varme opp og slappe av før og under GRE-dummies

GRE er like mye fysisk trening som det er mentalt, og det er mer som en maraton enn en sprint. Hvis du kommer ut av blokkene med en sprintens tempo, er du sikker på å raskt eksosere deg selv. Nøklene til å komme til enden og fullføre sterken, oppvarmer seg mentalt og holder seg i orden ...

Argument analyse på GRE - strategier og praksis spørsmål - dummies

Argument analyse på GRE - strategier og praksis spørsmål - dummies

Når du takler et argument Analysespørsmål på GRE, din jobb er å identifisere om forfatteren har gjort en tilstrekkelig jobb med å presentere og støtte sin stilling. Graduate skoler forventer at du ikke bare skal lese med forståelse, men også å undersøke informasjonen og argumentet som presenteres og sortere logikken som er rimelig fra ...

Argument analyse på GRE Verbal Essay Test - praksis spørsmål - dummies

Argument analyse på GRE Verbal Essay Test - praksis spørsmål - dummies

Når du tar GRE Verbal testen, et av essay spørsmålene vil be deg om å analysere et argument. Du må lese argumentet, se på sine underliggende forutsetninger, og deretter forklare hvordan disse forutsetningene påvirker argumentet. Følgende praksis spørsmål ligner på hva du finner på testen. Øvelsesspørsmål Tid: ...

Redaktørens valg

Oversikt over sikkerhetspolitikk for mobilenheter - dummier

Oversikt over sikkerhetspolitikk for mobilenheter - dummier

Sikkerhetspolitikk for mobile enheter som knytter seg til bedriftsnettverket kan deles inn i to kategorier: retningslinjer for godkjente enheter og retningslinjer for andre enheter. Enhetspolicyer. Her er en oversikt over de to kategoriene av enhetsretningslinjer som du må kommunisere med brukere: Politikk for godkjente enheter: Denne policyen gjelder for alle bedriftsutstedte ...

Oversikt over mobilenhetssikkerhet gjennom skybaserte beskyttelser - dummies

Oversikt over mobilenhetssikkerhet gjennom skybaserte beskyttelser - dummies

Ved hjelp av skybasert endpoint-sikkerhet er en metode for å beskytte enterprise mobile enheter fra virus, malware, spam og andre trusler. Den faktiske trusselsbeskyttelsen skjer i skyen eller sentralisert datasenter for sluttpunktsprogramvareleverandøren i denne typen distribusjon. Trafikk til og fra de mobile enhetene blir omdirigert på enheten til ...

Oversikt over mobilenhetssikkerhet gjennom enhetsadministrasjon - dummies

Oversikt over mobilenhetssikkerhet gjennom enhetsadministrasjon - dummies

Nå som du har tenkt på å sikre mobilen enheter på nettverket ditt fra trusler som virus og malware, er det på tide å planlegge for ekstern håndheving av retningslinjer for enhetsadministrasjon eller sikkerhet. Du får ideen. Det handler om enhetssikkerhetsetikett, om å ta de enkle, men ofte ignorerte trinnene for å beskytte vitale data lagret på ...

Redaktørens valg

Hånd- og håndleddskader grunnleggende for legeassistenteksamen - dummies

Hånd- og håndleddskader grunnleggende for legeassistenteksamen - dummies

Legeassistenteksamen PANCE) vil stille spørsmål om forhold som påvirker hånden og håndleddet. De spenner fra godartede cyster til mindre forstuinger til utbruddssvikt, så gjør deg kjent med det grunnleggende. Ganglioncyster En vanlig myk vævsmasse som du kan se på hendene og håndleddene, er en ganglioncyst, også kjent ...

HIV Grunnleggende for legeassistenteksamen - dummies

HIV Grunnleggende for legeassistenteksamen - dummies

For legeassistenteksamen (PANCE), bør du være kjent med noen generelle ting som angår HIV, spesifikke infeksjoner relatert til HIV, og bivirkninger av visse medisiner. HIV står for humant immundefektvirus. Risikofaktorer for å skaffe hiv inkluderer høyrisiko seksuell atferd og narkotikamisbruk, spesielt intravenøs bruk med skitne nåler. Kommer i kontakt med ...

Mageområdet for legeassistenteksamen - dummies

Mageområdet for legeassistenteksamen - dummies

Etter å ha reist gjennom spiserøret, din neste destinasjon i forberedelsene til legeassistenteksamen (PANCE) er det livlige magesektoren. Inneholder cardia, fundus, antrum og pylorus, er dette området bare moden for patologi og fremtidige PANCE-spørsmål. Magen er et sted hvor mye av fordøyelsen finner sted. Hovedcellene ...