Hem Personliga finanser Programmering med Java: Några observationer om Android Classes - dummies

Programmering med Java: Några observationer om Android Classes - dummies

Innehållsförteckning:

Video: ZEITGEIST: MOVING FORWARD | OFFICIAL RELEASE | 2011 2024

Video: ZEITGEIST: MOVING FORWARD | OFFICIAL RELEASE | 2011 2024
Anonim

När du startar ett nytt Java-projekt, erbjuder Android Studio att skapa en aktivitet för ditt projekt. Android Studio erbjuder dig flera olika typer av aktiviteter, till exempel en grundläggande aktivitet, en tom aktivitet, en inloggningsaktivitet och så vidare. Om du begär en tom aktivitet får du den här koden:

paket com. allyourcode. a10_11;

importera android. Stöd. v7. app. AppCompatActivity;

importera android. os. Bunt;

public class MainActivity utökar AppCompatActivity {

@Override

skyddad void onCreate (Bundle savedInstanceState) {

super. onCreate (savedInstanceState);

setContentView (R. Layout. Activity_main);

}

}

Koden förklarar en klass med namnet MainActivity . Detta namn MainActivity ingår inte i Android API-biblioteket. Det är ett namn som du gör när du skapar ett nytt Android-projekt. (Egentligen gör Android Studio namnet. Du accepterar namnet eller ändrar det till ett annat namn när du följer stegen för att skapa ett nytt projekt.)

Klassen MainActivity utökar en klass som hör till till Android SDK-bibliotek, nämligen klassen AppCompatActivity . Med andra ord är MainActivity -objektet ett AppCompatActivity -objekt. Objektet MainActivity har alla rättigheter och ansvar som någon AppCompatActivity -exempel har. Till exempel har MainActivity en onCreate -metod, som den åsidosätter.

MainActivity ärver cirka 460 linjer kod från Android's AppCompatActivity klass, som ärver cirka 1.000 linjer från Android FragmentActivity class, som ärver cirka 6, 700 linjer från Android Aktivitetsklass. De arvade metoderna inkluderar sådana som getCallingActivity , getCallingPackage , getParent , getTitle , getTitleColor , getWindow , , påKeyDown , påKeyLongPress , onLowMemory , påMenuItemSelected , setTitle <, setTitleColor , startAktivitet , avsluta och många, många andra. Du ärverger all denna funktion med två enkla ord: utökar AppCompatActivity . I terminologin för familjeförhållanden är din MainActivity -kategori en efterkommer av Android's

Aktivitet -klass. Din klass MainActivity är en typ av Aktivitet . Denna bild, som tas direkt från Android: s onlinedokumentation, sammanfattar denna information om klassen AppCompatActivity .

Ett AppCompatActivity-släktträd. Bokmärk sidan för enkel åtkomst till Androids API-biblioteksdokumentation. Förutom att vara en underklass implementerar klassen

AppCompatActivity

ett gäng gränssnitt, inklusive gränssnittet

AppCompatCallback , gränssnittet TaskStackBuilder och andra. Du behöver inte komma ihåg något av detta. Om du någonsin behöver veta det kan du kolla upp det på Android: s dokumentationssida. Java's superord, revisited Ordet super

står för superklassens konstruktör. Olika kod använde sökordet

super på olika sätt. Ja, super har alltid något att göra med en klassens föräldraklass. Men nej, super refererar inte alltid till moderklassens konstruktör. I en onCreate metod kallas samtalet

super. onCreate (savedInstanceState) skickar savedInstanceState till moderklassens metod onCreate . Förälderklassen är klassen AppCompatActivity . Så Java kallar AppCompatActivit y-klassens onCreate -metod. Metoden AppCompatActivity klassens

onCreat e innehåller sitt eget samtal till super. onCreate (savedInstanceState) . Klassen AppCompatActivity klassen är klassen FragmentActivity . Så Java övergår savedInstanceState till metoden FragmentActivity klassens onCreate . Och så vidare. Det är inte förrän du kommer till klassen Aktivitet - din M

ainActivity klassens farförälder - att koden gör direkt användning av variabeln savedInstanceState . Från denna savedInstanceState -information sätter koden aktiviteten på samma sätt som tidigare innan systemet förstörde det. Casting, again När du ringer findViewById

, vet Java inte vilken sorts syn den hittar. Metoden

findViewById returnerar alltid ett Visa -exempel, men många Android-klasser förlänger klassen Visa . Till exempel klasserna Knapp , TextView , ImageView , Checkbox , Chronometer och RatingBar alla utökar Android's View -klass. Om du skriver följande kod: // GÖR INTE DETTA! ! TextView textView; textView = findViewById (R. Id. TextView);

Java släpper ut en rungande, ödesdigra vrålning: "Hur vågar du antar att objektet som returneras genom ett samtal till

findViewById

hänvisar till en förekomst av klassen

TextView ! "(I själva verket visar Java tyst och mekaniskt ett felmeddelande Inkompatibla typer i Android Studios redaktör.) Narrowing betyder att försöka tilldela ett långt

värde till en > int värde. Ett värde långt har 64 bitar och ett värde int har endast 32 bitar. Därför misslyckas försöket till förminskning. I den kod du hittar här är det dåliga findViewById samtalet ett annat försök att göra inskränkning - tilldela värdet Visa som returneras av ett metodanrop till en TextView -variabel.Klassen TextView är en underklass i klassen Visa , så uppgiften misslyckas olyckligt. beröm Java-gudarna genom att lägga till en casting-operatör till koden. Du berättar för Java att konvertera vad som helst som kommer från metoden findViewById i ett TextView

-objekt. textView = (TextView) findViewById (R.ID.textView1); Medan du skriver in koden, humörar Java dig och säger, "Din casting-operatör visar mig att du är medveten om skillnaden mellan en

TextView och någon gammal View

. Jag gör mitt bästa för att tolka det Visa objektet som jag hittar vid körning som ett TextView objekt. "(Faktum är att Java inte säger något när du skriver koden. Det faktum att Java inte visar några felmeddelanden när du använder det här casting-tricket är ett bra tecken. Java-gjutningsfunktionen sparar dagen!) Casting hindrar dig från att se ett felmeddelande medan du utvecklar din kod. På så sätt är gjutning ganska användbar för Java. Men gjutning kan inte rädda dig om din kod innehåller runtimefel. När du skriver textView = (TextView) findViewById (R.ID.textView1); du verifierar att namnet textView

representerar en

TextView

widget. När appen körs tar Java R. id. textView widget från activity_main. xml fil, och allt fungerar bra. Men du kan ibland glömma att kolla din R. java namn på komponenterna i XML-filen. Ett samtal till findViewById speglar överraskande en Button komponent när din gjutning berättar för Java att förvänta en TextView widget. När detta händer, kraschar Java på gjutningsoperatören och din app kraschar under sin körning. Tillbaka till ritbordet!

Programmering med Java: Några observationer om Android Classes - dummies

Redaktörens val

Hur man redigerar bilder i Redigera snabbläge för Photoshop Elements 9 - dummies

Hur man redigerar bilder i Redigera snabbläge för Photoshop Elements 9 - dummies

I Photoshop Element, Redigera Snabbt läge är en uppskattad version av Redigera fullt läge som ger grundläggande fixverktyg tillsammans med några unika funktioner, till exempel en förhandsgranskning av bilden. Här är ett steg för steg arbetsflöde som du kan följa i Redigera snabbläge för att reparera dina foton: Välj ett eller flera foton i ...

Hur man redigerar i Photoshop Elements 10: s Snabb Fotoredigeringsläge - dummies

Hur man redigerar i Photoshop Elements 10: s Snabb Fotoredigeringsläge - dummies

Snabb Fotoredigering är en uppskattad version av Full Photo Edit-läge som bekvämt ger grundläggande fixeringsverktyg och kastar i några unika egenskaper, till exempel en förhandsgranskning av bilden. Här är ett steg för steg arbetsflöde som du kan följa i Quick Photo Edit-läget för att reparera dina foton:

Hur man förbättrar Photoshop Elements-bilder med Photo Effects - dummies

Hur man förbättrar Photoshop Elements-bilder med Photo Effects - dummies

Fotoeffekter i Photoshop Elements 11 fungerar som applicera filter; medan dialogrutan Filtreringsgalleri ger dig många alternativ för att tillämpa ett filter, ger den guidade panelen dig filtereffekter och tar dig genom steg för att justera ljusstyrka, ändra färgton och mättnad och göra andra justeringar för att perfekta resultatet. Du ...

Redaktörens val

Hur man tar bort bilder från din Canon EOS 7D Mark II - dummies

Hur man tar bort bilder från din Canon EOS 7D Mark II - dummies

När du granskar en bild, bestämmer du om det är en målvakt. Om du tittar på en bild på din Canon EOS 7D Mark II, gillar du inte bilden av någon anledning kan du radera det. Men borttagning av bilder måste ske med stor försiktighet eftersom uppgiften inte kan ångras. När du har raderat en ...

Hur man redigerar filmer på en Canon EOS 60D - dummies

Hur man redigerar filmer på en Canon EOS 60D - dummies

60D Edit-funktionen gör det härligt enkelt för att ta bort oönskade delar från början eller slutet av en film direkt på din kamera. Denna ombordredigering är praktisk men grundläggande, så förvänta dig inte mirakel. Här är de enkla stegen för att trimma början eller slutet på en film: Klicka på ikonen Redigera (det ser ut ...

Redaktörens val

Hur man arbetar med text i ett Word 2010-tabell - dummies

Hur man arbetar med text i ett Word 2010-tabell - dummies

Text hinner i ett bord i Word 2010 på en cell-vid-cell basis. Varje cell i ett Word-bord kan ha ett eget styckeformat och en egen uppsättning flikar. Grupper av celler, rader och kolumner och hela tabellen kan väljas och formateras samtidigt, om du vill. All standardtext ...

Hur man arbetar med Word 2010: s decimala flik - dummies

Hur man arbetar med Word 2010: s decimala flik - dummies

Du kan använda decimalfliken i Word 2010 till rad upp kolumner av siffror. Även om du kan använda en rätt flik för att göra detta jobb är decimalfliken ett bättre val. I stället för högerjusterad text, som den högra fliken gör, justerar decimalfliken siffror efter deras decimaldel - perioden i ...

Hur man arbetar med flera Word 2010-dokument på samma gång - dummies

Hur man arbetar med flera Word 2010-dokument på samma gång - dummies

O saker Word 2010 kan göra med dokument! Du kan öppna flera Word-dokument samtidigt och arbeta på mycket av dem, växla mellan de olika öppna dokumenten. Öppnar flera Word-dokument samtidigt Det är inte en fråga om hur Word kan fungera på mer än ett dokument åt gången. Nej, ...