Hjem Personlig finansiering Programmering med Java: Noen observasjoner om Android-klasser - dummies

Programmering med Java: Noen observasjoner om Android-klasser - dummies

Innholdsfortegnelse:

Video: Week 1, continued 2024

Video: Week 1, continued 2024
Anonim

Når du starter et nytt Java-prosjekt, tilbyr Android Studio å opprette en aktivitet for prosjektet ditt. Android Studio tilbyr deg flere forskjellige typer aktiviteter, for eksempel en grunnaktivitet, en tom aktivitet, en påloggingsaktivitet og så videre. Hvis du ber om en tom aktivitet, får du denne koden:

pakke com. allyourcode. a10_11;

importer android. Brukerstøtte. v7. app. AppCompatActivity;

import android. os. Bunt;

offentlig klasse MainActivity utvider AppCompatActivity {

@Override

beskyttet tomt påCreate (Bundle savedInstanceState) {

super. onCreate (savedInstanceState);

setContentView (R. Layout. Activity_main);

}

}

Koden erklærer en klasse som heter MainActivity . Dette navnet MainActivity er ikke en del av Android API-biblioteket. Det er et navn du lager når du lager et nytt Android-prosjekt. (Egentlig gjør Android Studio navnet. Du godtar navnet eller endrer det til et annet navn når du følger trinnene for å opprette et nytt prosjekt.)

Klassen MainActivity utvider en klasse som tilhører til Android SDK-bibliotek, nemlig klassen AppCompatActivity . Med andre ord er MainActivity objektet et AppCompatActivity objekt. Objektet MainActivity har alle rettigheter og ansvar som noen AppCompatActivity forekomst har. For eksempel har MainActivity en onCreate -metode, som den tilsidesetter.

MainActivity om 460 linjer med kode fra Android's AppCompatActivity klasse, som arver omtrent 1.000 linjer fra Android FragmentActivity class, som arver rundt 6, 700 linjer fra Android's Aktivitetsklasse. De arvede metoder inkluderer de som getCallingActivity , getCallingPackage , getParent , getTitle , getTitleColor , , , på, , påKeyDown , påKeyLongPress , onLowMemory , påMenuItemSelected , setTitle <, setTitleColor , startAktivitet , ferdig og mange, mange andre. Du arver all denne funksjonaliteten med to enkle ord: utvider AppCompatActivity . I terminologien til familieforhold er klassen din MainActivity en etterkommer av Android's

Aktivitet klasse. Din klasse MainActivity er en slags Aktivitet . Dette bildet, tatt direkte fra Android's online dokumentasjon, oppsummerer denne informasjonen om klassen AppCompatActivity .

Et AppCompatActivity-treet. Bokmerk siden for enkel tilgang til Android's API-biblioteksdokumentasjon. I tillegg til å være en underklasse, implementerer klassen

AppCompatActivity

en mengde grensesnitt, inkludert

AppCompatCallback grensesnittet, TaskStackBuilder grensesnittet og andre. Du trenger ikke å huske noe av dette. Hvis du noen gang trenger å vite det, kan du se det opp på Android's dokumentasjonsside. Java's superord, revisited Ordet super

står for superklassens konstruktør. Ulike kode brukte

super søkeordet på en annen måte. Ja, super har alltid noe å gjøre med en klasses foreldreklasse. Men nei, super refererer ikke alltid til foreldrenes klassens konstruktør. I en onCreate -metode, blir samtalen

super. onCreate (savedInstanceState) sender savedInstanceState til foreldreklassens onCreate -metode. Foreldreklassen er klassen AppCompatActivity . Så kalles Java AppCompatActivit y klassens onCreate -metode. Metoden AppCompatActivity klassens

onCreat e inneholder sin egen samtale til super. onCreate (savedInstanceState) . Klassen AppCompatActivity klassen er klassen FragmentActivity . Så Java overgår savedInstanceState til FragmentActivity klassens onCreate metode. Og så videre. Det er ikke før du kommer til klassen Aktivitet - din M

klasse over besteforeldre - at koden direkte bruker savedInstanceState -variabelen. Fra denne savedInstanceState -informasjonen, setter koden aktiviteten tilbake som det var før systemet ødela det. Casting, again Når du ringer findViewById , vet Java ikke hvilken type visning den vil finne. Metoden

findViewById

returnerer alltid et eksempel på Vis , men mange Android-klasser utvider klassen Vis . For eksempel er klassene Knapp , Tekstvisning , ImageView , CheckBox , Kronometer og RatingBar Alle utvider Android's View klasse. Hvis du skriver inn følgende kode: // IKKE GJØR DETTE! ! TextView textView; textView = findViewById (R. Id. TextView); Java lar ut en rungende, forferdelig brøl: "Hvordan tør du anta at objektet returneres ved et kall til

findViewById

refererer til en forekomst av klassen

TextView

! "(Faktisk viser Java tydelig og mekanisk en feilmelding på Inkompatible typer i Android Studios redigerer.) Narrowing betyr å forsøke å tilordne en lang verdi til en > int

verdi. En verdi på lang har 64 biter, og en verdi på int har bare 32 biter. Så forsøket på innsnevring mislykkes. I koden du finner her, er det dårlige findViewById -samtalen et annet forsøk på å gjøre innsnevring - tilordne verdien Vis returnert av en metodeanrop til en TextView -variabel.Klassen TextView er en underklasse av klassen Vis , slik at oppgaven mislykkes. beundre Java-gudene ved å legge til en casting-operatør til koden. Du forteller Java for å konvertere hva som helst som kommer fra findViewById metodeanropet til et TextView objekt.

textView = (TextView) findViewById (R.ID.textView1); Mens du skriver koden, hummer du Java og sier, "Din casting operatør viser meg at du er klar over forskjellen mellom en TextView

og en hvilken som helst gammel View . Jeg vil gjøre mitt beste for å tolke objektet

Vis som jeg finner ved kjøretid som et TextView objekt. "(Faktisk, mens du skriver koden, sier Java ingenting. Det faktum at Java ikke viser noen feilmeldinger når du bruker dette casting-tricket, er et godt tegn. Java-gjengingsfunksjonen sparer dagen!) Casting hindrer deg i å se en feilmelding mens du utvikler koden din. På den måten er støping ganske nyttig for Java. Men casting kan ikke spare deg hvis koden din inneholder kjøretidsfeil. Når du skriver inn textView = (TextView) findViewById (R. Id. TextView1); du bekrefter at navnet textView representerer en

TextView

-grensesnitt. Når appen kjører, griper Java

R. id. textView widget fra activity_main. xml fil, og alt fungerer bra. Men du kan noen ganger glemme å sjekke R. java navn på komponentene i XML-filen. En samtale til findViewById spretter overraskende ut en Button komponent når avstøpningen din forteller at Java forventer en TextView widget. Når dette skjer, støter Java på støpingsoperatøren, og appen din krasjer under kjøringen. Tilbake til tegnebrettet!

Programmering med Java: Noen observasjoner om Android-klasser - dummies

Redaktørens valg

Vanlige visuelle studio-tastaturgenveier - dummier

Vanlige visuelle studio-tastaturgenveier - dummier

Du kan få tilgang til mange av funksjonene du bruker i Visual Studio til Lag en Silverlight-applikasjon gjennom tastaturgenveier. Her er de vanlige snarveiene som hjelper deg med å utføre oppgaver raskt i Visual Studio. Tastatur snarvei Handling Ctrl + Alt + F1 Åpne Visual Studio Documentation Ctrl + Shift + B Bygg programmet Ctrl + F5 Kjør prosjektet Ctrl + Alt + X Åpne verktøykassen hvis ...

Velg riktig format for e-postmarkedsføringsmeldingen din - dummies

Velg riktig format for e-postmarkedsføringsmeldingen din - dummies

Som Du komponerer markedsførings-e-postene dine, husk at formatet på e-posten din visuelt kommuniserer hovedideen til innholdet før publikum selv begynner å lese det. Forbrukerne forventer at formatet på e-posten din samsvarer med informasjonen den inneholder, slik at bruk av riktig format bidrar til å bygge publikums tillit. Velg ...

Kombinere flere samtaler til handling i din markedsføring e-post - dummies

Kombinere flere samtaler til handling i din markedsføring e-post - dummies

Din e-postmarkedsføringslisten består sannsynligvis av prospekter og kunder i ulike stadier av kjøpesyklusen med litt forskjellige interesser, så en del av publikum vil aldri være klar til å reagere umiddelbart på hver handling. Selv om alle på din e-postliste er klare til handling, er dine anrop til handling ...

Redaktørens valg

Opprett en Pivot-tabell YTD-totalvisning for Excel-rapporten - dummies

Opprett en Pivot-tabell YTD-totalvisning for Excel-rapporten - dummies

En nyttig rapportvisning I et Excel-pivottabell er YTD-totalsvisningen. Noen ganger er det nyttig å fange et løp-total-visning for å analysere bevegelsen av tall på en årlig basis (YTD) basis. Denne figuren illustrerer et pivottabell som viser en løpende total omsetning per måned for hvert år. I denne visningen er du ...

Opprett en pivottabel ved hjelp av Excels interne datamodell - dummies

Opprett en pivottabel ved hjelp av Excels interne datamodell - dummies

I enkelte tilfeller vil du kanskje opprett et pivottabell fra grunnen ved hjelp av Excels eksisterende interne datamodell som kildedata. Her er trinnene for å gjøre det: Velg Sett inn → PivotTable fra båndet. Dialogboksen Create PivotTable åpnes. Velg alternativet Bruk en ekstern datakilde, som vist, og klikk deretter på ...

Hvordan lage en standard snikker i Power Pivot - dummies

Hvordan lage en standard snikker i Power Pivot - dummies

Slicers tilbyr et brukervennlig grensesnitt med som du kan filtrere en Power Pivot pivottabell. Det er på tide å lage din første slicer. Bare følg disse trinnene:

Redaktørens valg

Alarmhendelsen i GameMaker: Studio-dummies

Alarmhendelsen i GameMaker: Studio-dummies

Alarmer er utmerket for når du vil ha tid Handlinger i din spill i GameMaker: Studio. For eksempel, hvis du vil at spilleren bare skal skyte kuler en gang hvert annet sekund, kan du sette en alarm for det. Hvis du vil når nye fiendtlige fly vises, kan du sette en alarm for det ...

Flytt retningsaktive handlinger i GameMaker: Studio - dummies

Flytt retningsaktive handlinger i GameMaker: Studio - dummies

I GameMaker: Studio, Flytt-fanen er den første kategorien i vinduet Objektegenskaper. Her er en liste over hver av handlingene du kan tilordne objektene. I følgende definisjoner brukes begrepet Instance for å referere til hva handlingen påvirker. Men du konfigurerer handlingen i objektet ...

Andre hendelser i GameMaker: Studio - dummies

Andre hendelser i GameMaker: Studio - dummies

I GameMaker: Studio, Andre hendelser er de som ikke anses verdige av sitt eget sted på menyen Event. Disse andre hendelsene kan være ganske kjempebra. Menyelementene er ganske mye selvforklarende, så det er ikke nødvendig med detaljer her. For fullstendige beskrivelser av hver av disse elementene, kan du alltid trykke F1 i GameMaker og ...