Hur du använder fragment i dina Android-appar för ett kraftfullt och dynamiskt användargränssnitt

Författare: John Stephens
Skapelsedatum: 28 Januari 2021
Uppdatera Datum: 19 Maj 2024
Anonim
Hur du använder fragment i dina Android-appar för ett kraftfullt och dynamiskt användargränssnitt - Appar
Hur du använder fragment i dina Android-appar för ett kraftfullt och dynamiskt användargränssnitt - Appar

Innehåll


Obs: Den här artikeln antar att du känner till grunderna för Android-utveckling och Java. Du bör redan kunna skapa grundläggande layouter och använda vyer, onClick och findViewByID. Om du fattar dessa koncept är du redo att lära dig att använda fragment!

Fragment är en kraftfull funktion i bra Android-gränssnitt som gör att du kan närma dig app-design på ett modulärt sätt. Dessa är distinkta vyer som kan innehålla hela layouter och som har en egen åtföljande Java-kod. Genom att bryta ner användargränssnittet på detta sätt kan du skapa fler logiska layouter som är lättare för dina användare att förstå. Du kan ge dem mer information och kontroller utan att de behöver lämna aktiviteten.

Se även: Problemfritt fragment: Med Android: s navigationsarkitekturkomponent


Fragment ger dig betydligt fler alternativ i din appdesign och kan förbättra användarupplevelsen väsentligt

Dessutom är att fragment fungerar som klasser och objekt genom att du kan ha flera instanser av samma fragment. Det betyder att du kan använda samma layout om och om igen utan att behöva skriva om koden, eller till och med visa två olika versioner sida vid sida.

Kort sagt, medan detta ännu är annan sak att lära sig när det gäller den till synes oändliga to-do-listan som är involverad i Android-appar, det är något som kan ge dig avsevärt fler alternativ i din appdesign och väsentligt förbättra användarupplevelsen - vilket gör det mer än värt att använda tiden .

Hur du bygger ditt första Android-fragment

Så, vad kan vi göra med fragment som inte skulle vara vettigt på något annat sätt?


Kanske har vi en lista över filer - kanske detta är ett bildgalleri - och vi vill visa en beskrivning och ge användaren möjlighet att radera eller dela. Den sortens saker. Vi kan skicka dem till en ny 'Beskrivning' -sida varje gång genom att använda en separat aktivitet, men om du använder fragment kan vi behålla dem på den ena sidan som blir mindre skurrande.

Öppna Android Studio och skapa en lista med slumpmässiga bilder i activity_main.xml. Jag använder bilder av drake boll Super eftersom jag är en nörd och det är vad jag har liggande på min PC ...

Nu ska vi skapa vårt första fragment.

För att göra detta kommer du att gå till Arkiv> Nytt> Fragment. MainActivity.java måste väljas till vänster när du gör detta och du väljer ett "tomt" fragment för nu. Du kommer då att kunna välja ett namn för den nya skapelsen, som vi kommer att kalla "Beskrivning". Ta bort de två rutorna under - vi behöver inte det just nu.

När detta är gjort hittar du att du nu inte bara har en ny java-fil som heter Description.java, utan också en ny layoutfil som heter fragment_description.xml - precis som om du hade skapat en ny klass! Detta innebär att du kommer att placera koden som följer med ditt nya fragment i sin egen separata java-fil.

Lägga till layouter, vyer och kod

Den goda nyheten är att det är väldigt lätt för oss att lägga till vyer och en layout när vi använder fragment. Vi gör detta precis som vi normalt skulle göra genom att redigera fragment_timer.xml.

Låt oss använda en linjär layout igen och den här gången lägga till några kontroller och beskrivande text. Du kan fästa vad som helst här för nu.

Så nu är nästa fråga: hur får du det här att dyka upp i din app?

Du kan göra detta genom att lägga till fragmentet i aktiviteten, precis som du skulle göra någon annan vy. Så, gå till Activity_main.xml och lägg till vyn så att den tar upp en del av skärmen - kanske längst ner.

Om du vill göra det som jag gjorde, använde jag en vertikal linjär layout och gav alla bilder en vikt på 1 och fragmentet en vikt på 2.

Du kommer att märka att förhandsgranskningen inte visar dig det faktiska fragmentet, bara en platshållare. Lägg också märke till att jag måste ta med namnet på fragmentet i XML, så att Android vet var det finns. Du behöver också ett ID för varje fragment.

Koden

Som diskuterats kommer den kod vi behöver för att använda fragment att gå i sin egen java-fil. I det här fallet är det filen Description.java.

Om du checkar ut den här sidan ser du att det finns en konstruktör (precis som i alla klasser som skapar ett objekt) och en metod som heter onCreateView. Den metoden är där xml används för att blåsa upp den vyn och det är också motsvarigheten till din vanliga onCreate metod i en standardaktivitet.

För det mesta kan du göra saker som du normalt skulle göra här. findViewByID fungerar och du kan använda detta för att ändra text etc. men du måste få referensen något annorlunda. Ändra raden som lyder:

tillbaka inflater.inflate (R.layout.fragment_description, behållare, falsk);

Till:

Visa v = inflater.inflate (R.layout.fragment_description, behållare, falsk);

Och använd sedan:

v.findViewByID.

Nu kan du komma åt dina vyer som du vanligtvis skulle göra:

public View onCreateView (LayoutInflater-uppblåsare, ViewGroup-behållare, Bundle sparadInstanceState) {Visa v = inflater.inflate (R.layout.fragment_description, behållare, falsk); Knapp okButton = v.findViewById (R.id.OK) ;; Button shareButton = v.findViewById (R.id.Dela med sig); okButton.setOnClickListener (new View.OnClickListener () {public void onClick (View v) {Toast.makeText(getActivity (), "OK!", toast.LENGTH_LONG ).show(); }}); shareButton.setOnClickListener (new View.OnClickListener () {public void onClick (View v) {Toast.makeText(getActivity (), "Sharing ...", Toast.LENGTH_LONG ).show(); }}); tillbaka v; }}

Använd fragment med flera instanser

Du kan se hur det är mycket lättare att skapa ett strömlinjeformat användargränssnitt och kod när vi använder fragment. Istället för att använda layouter-inom-layouter och sedan jonglera med massor av klick allt inom en enda Java-fil. Vad mer är att denna "modulära" strategi skulle göra det möjligt för dig att använda den här vyn över aktiviteter och till och med i menyer och andra dynamiska platser.

Men den riktigt coola delen är det faktum att du kan ha flera instanser av samma fragment som alla existerar samtidigt.

Att göra detta är enkelt: du lägger bara till mer än en vy och blåser upp med exakt samma kod.

Nu kan du förhoppningsvis börja se kraften i att använda fragment: föreställ dig att ha en recyclervy (en rullningslista) med bilder, var och en med detaljer och kontroller precis under. Det behövs inte skapa en helt ny layout varje gång och du kan dölja vyerna tills användaren klickade på bilden!

Vad mer är att du också kan generera nya fragment programmatiskt. Allt du behöver är någonstans för fragmentet att gå i din layout - till exempel en ramlayout (som jag kommer att kalla fragmentTarget) och sedan kan du göra följande:

Fragment lagt tillFragment = nytt Beskrivning (); FragmentTransaction transaktion = getSupportFragmentManager (). BeginTransaction (); transaction.replace (R.id.fragmentTarget, tillagdFragment); transaction.addToBackStack (null); transaction.commit ();

Se till att importera de klasser som krävs - du blir ombedd när du försöker använda fragment i din kod. Se bara till att välja det bästa alternativet som säger "v4".

Att kunna lägga till fragment programmatiskt är viktigt eftersom det innebär att vi kan generera en dynamisk lista med bilder (som vi har laddat ner, som finns i en specifik mapp etc.) och sedan få informationen direkt upp för oss.

Så i det nya exemplet har det andra fragmentet lagts till programmatiskt.

Slutligen kan du finna att du vill ändra utseendet på dina fragment beroende på var de ligger. Den goda nyheten är att du enkelt kan göra detta genom att skicka ett ID som ett paket när du skapar fragmentet och sedan extraherar det värdet i andra änden.

Använd MainActivity.java:

Bundle bundle = new Bundle (); bundle.putInt ("ID", 1); addedFragment.setArguments (knippet);

Och sedan i Description.java lägg till:

int eyeD = 0; Bundle bundle = this.getArguments (); if (paket! = null) {eyeD = bundle.getInt ("ID", 0); } switch (eyeD) {fall 1: ...

Du kan då - till exempel - få din app att visa olika anteckningar för varje bild.

Avslutande kommentarer

Så det är så du använder fragment. Förhoppningsvis förstår du grunderna och det här inlägget har gett dig tillräckligt med en förståelse för att du kan gå vidare och räkna ut resten. Ännu viktigare, jag hoppas att det har visat dig några av de möjliga användningarna av fragment och den potential de erbjuder för smartare appdesign.

Om du vill se ett annat exempel på fragment i aktion, var noga med att kolla in mitt senaste inlägg om att skapa en anpassad startare!

Android-utveckling:

  • Hur man skapar en VR-app för Android på bara 7 minuter
  • Bygg din egen åtgärd för Google Assistant
  • Root Android: Allt du behöver veta!
  • En apps anatomi: En introduktion till aktivitetslivscykler
  • Android Jetpack: Vad betyder de senaste tillkännagivandena för Android: s supportbibliotek?

Apple var inte den förta telefontillverkaren om implementerade getnavigering på ina telefoner, men man kan hävda att företaget tartade den vepande trenden tillbaka 2017. Nu kommer ...

Om du kliar för en ny karriär, jobb för profeionella nätverkare är alltid tillgängliga. Att utföra en certifiering för branchledaren inom företagnätve...

Fler Detaljer