Huis Persoonlijke financiën Programmeren met Java: enkele observaties over Android-klassen - dummies

Programmeren met Java: enkele observaties over Android-klassen - dummies

Inhoudsopgave:

Video: Learn Java Programming with Beginners Tutorial 2024

Video: Learn Java Programming with Beginners Tutorial 2024
Anonim

Wanneer u een nieuw Java-project start, biedt Android Studio u aan een activiteit voor uw project te maken. Android Studio biedt verschillende soorten activiteiten, zoals een basisactiviteit, een lege activiteit, een inlogactiviteit, enzovoort. Als u om een ​​lege activiteit vraagt, krijgt u deze code:

package com. allyourcode. a10_11;

importeer android. ondersteuning. v7. app. AppCompatActivity;

importeer android. os. Bundel;

openbare klasse MainActivity breidt AppCompatActivity uit {

@Override

beschermde ongeldig onCreate (bundel savedInstanceState) {

super. onCreate (savedInstanceState);

setContentView (r.lay-out.activiteit_hoofd);

}

}

De code declareert een klasse met de naam MainActivity . Deze naam MainActivity maakt geen deel uit van de Android API-bibliotheek. Het is een naam die u verzint wanneer u een nieuw Android-project maakt. (Eigenlijk maakt Android Studio de naam aan, accepteert u de naam of wijzigt u deze in een andere naam wanneer u de stappen volgt om een ​​nieuw project te maken.)

De klasse MainActivity breidt een klasse uit die thuishoort naar de SDK-bibliotheek van Android, namelijk de klasse AppCompatActivity . Met andere woorden, het MainActivity -object is een AppCompatActivity -object. Het MainActivity -object heeft alle rechten en verantwoordelijkheden die een AppCompatActivity -instantie heeft. De MainActivity heeft bijvoorbeeld een onCreate -methode, die deze overschrijft.

In feite erft de MainActivity -klasse ongeveer 460 regels code uit de AppCompatActivity -klasse van Android, die ongeveer 1 000 regels van de van Android erft FragmentActivity -klasse, die ongeveer 6 700 regels van de Activiteitsklasse van Android overerft. De overgeërfde methoden omvatten degenen zoals getCallingActivity , getCallingPackage , getParent , getTitle , getTitleColor , getWindow , onBackPressed , onKeyDown , onKeyLongPress , onLowMemory , onMenuItemSelected , setTitle <, setTitleColor , startActivity , voltooien en nog vele andere. U ervaart al deze functionaliteit met twee eenvoudige woorden: verlengt AppCompatActivity . In de terminologie van familierelaties is uw

MainActivity -klasse een afstammeling van de activiteit -klasse van Android. Uw MainActivity -klasse is een soort activiteit . Deze afbeelding, rechtstreeks overgenomen uit de online-documentatie van Android, geeft een samenvatting van deze informatie over de klasse

AppCompatActivity . Een stamboom van AppCompatActivity.

Voeg een bladwijzer toe voor de pagina voor eenvoudige toegang tot de API-bibliotheekdocumentatie van Android.

Naast een subklasse, implementeert de klasse

AppCompatActivity een aantal interfaces, waaronder de AppCompatCallback -interface, de TaskStackBuilder -interface en andere. U hoeft hier niets van te onthouden. Als je het ooit moet weten, kun je het opzoeken op de documentatiepagina van Android. Java-superzoekwoord, herzien

Het woord

super staat voor de constructor van de superklasse. Verschillende code gebruikte het trefwoord super op verschillende manieren. Ja, super heeft altijd iets te maken met de bovenliggende klasse van een klas. Maar nee, super verwijst niet altijd naar de constructor van de ouderklasse. In een

onCreate -methode, de oproep super. onCreate (savedInstanceState) verzendt savedInstanceState naar de onCreate -methode van de bovenliggende klasse. De bovenliggende klasse is de klasse AppCompatActivity . Daarom roept Java de AppCompatActivit y-klasse onCreate aan. De

AppCompatActivity -klasse onCreat e-methode bevat een eigen aanroep van super. onCreate (savedInstanceState) . De klasse AppCompatActivity is de klasse FragmentActivity . Dus geeft Java savedInstanceState over aan de FragmentActivity -klasse onCreate -methode. Enzovoort. Pas als u de klasse

Activiteit - de overgrootouder van uw klasse M ainActivity - hebt bereikt, gebruikt de code rechtstreeks de variabele savedInstanceState . Uit deze savedInstanceState -informatie zet de code de activiteit terug zoals deze was voordat het systeem de activiteit vernietigde. Casten, opnieuw

Wanneer u

findViewById aanroept, weet Java niet wat voor soort weergave het zal vinden. De findViewById -methode retourneert altijd een View -instantie, maar veel klassen van Android breiden de View -klasse uit. De klassen Knop , Tekstweergave , ImageView , CheckBox , Chronometer en RatingBar breiden alle Android View -klasse uit. Als u de volgende code typt: // DO NOT DIT! !

TextView-tekstView;

textView = findViewById (r. Id. TextView);

Java laat een klinkend, woedend gebrul horen: "Hoe durf je te veronderstellen dat het object dat wordt geretourneerd door een aanroep van

findViewById verwijst naar een instantie van de TextView -klasse! "(In feite geeft Java stil en mechanisch een Incompatibele typen foutmelding weer in de editor van Android Studio.) Beperken

betekent dat u probeert een lange waarde toe te kennen aan een > int waarde. Een lange -waarde heeft 64 bits en een int -waarde heeft slechts 32 bits. Dus de poging tot verkleinen mislukt. In de code die u hier vindt, is de slechte findViewById -aanroep een andere poging om een ​​versmalling uit te voeren: de waarde Weergeven die door een methode-aanroep is geretourneerd, toewijzen aan een TextView -variabele.De TextView -klasse is een subklasse van de klasse View , dus de opdracht mislukt jammerlijk. tevreden de Java-goden door een casting-operator toe te voegen aan de code. U vertelt Java dat de conversie van findViewById

naar een TextView -object moet worden geconverteerd. textView = (TextView)

findViewById (tekst IDView1); Terwijl u de code intypt, schrijft Java u en zegt: "Uw casting-operator laat me zien dat u op de hoogte bent van het verschil tussen een TextView

en een oude View . Ik zal mijn best doen om het View -object dat ik tijdens runtime vind te interpreteren als een TextView -object. "(Terwijl je de code intikt, zegt Java niets, terwijl het feit dat Java geen foutmeldingen weergeeft wanneer je deze castingtruc gebruikt een goed teken is.) De castingfunctie van Java redt de dag!) Casting voorkomt dat u een foutmelding krijgt terwijl u uw code ontwikkelt. Op die manier is casten een behoorlijk handige functie van Java. Maar casten kan u niet redden als uw code runtime-fouten bevat. Wanneer u textView = (TextView) typt, vindt uViewById (R. Id. TextView1);

u controleert of de naam

tekstView

staat voor een TextView -widget. Wanneer de app wordt uitgevoerd, pakt Java de R. ID kaart. textView widget van activity_main. xml bestand, en alles werkt prima. Maar u kunt soms vergeten uw R te controleren. java namen tegen de componenten in het XML-bestand. Een aanroep van findViewById spuugt verrassend een Knop -gedeelte uit wanneer uw casting aan Java laat weten een tekstweergave -widget te verwachten. Wanneer dit gebeurt, verslikt Java zich in de casting-operator en crasht uw app tijdens de uitvoering. Terug naar de tekentafel!

Programmeren met Java: enkele observaties over Android-klassen - dummies

Bewerkers keuze

Hoe u Flash-video maakt en codeert - dummies

Hoe u Flash-video maakt en codeert - dummies

Als de pagina's die u maakt, zijn gewonnen ' t kan worden bekeken op mobiele apparaten (zoals een iPad of een smartphone), kunt u webpagina's maken met prachtige Flash-video. Adobe Flash Professional CS6 heeft een eigen ingebouwde video-encoder. Full-motionvideo in Flash is iets heel moois. U past de video aan voor het bekijken door de doelgroep ...

Hoe een aanpasbare interface te maken in CSS3 - dummies

Hoe een aanpasbare interface te maken in CSS3 - dummies

De grote variëteit en soorten schermen gebruikt om informatie weer te geven, maakt het nodig dat uw CSS3-commando's de gebruiker toestaan ​​om het formaat van de elementen naar wens aan te passen. In de meeste gevallen kunt u de gebruiker eenvoudig toestaan ​​om het element op elke gewenste grootte te maken. Er kunnen zich echter situaties voordoen waarin u de grootte van de grootte moet controleren ...

Hoe u een eenvoudige tabel op uw webpagina maakt - dummies

Hoe u een eenvoudige tabel op uw webpagina maakt - dummies

Tabellen laten u organiseer informatie op uw webpagina en geef het een georganiseerde uitstraling die uw bezoekers nuttig zullen vinden. Bij gebruik zoals bedoeld, hebben tabellen rijen en kolommen. Voor elke spot waar een rij en kolom elkaar kruisen, hebt u een tabelcel. Elke cel kan zijn eigen opmaak hebben: de gegevens erin ...

Bewerkers keuze

Hoe Postproduction Shareninging Filters werken - dummies

Hoe Postproduction Shareninging Filters werken - dummies

Verscherpingsfilters werken in postproductie door de randen (of aangrenzende gebieden met tonaal contrast) te benadrukken aan elkaar) in een afbeelding. Ze creëren een fijne highlight aan de donkere kant van de rand en een piepklein lowlight aan de lichtere kant van de rand. Dit toegevoegde contrast zorgt ervoor dat de randen er scherper uitzien vanaf een ...

HDR Work-Flow voor foto's met één belichting - dummies

HDR Work-Flow voor foto's met één belichting - dummies

In grote lijnen, enkele belichting hoog dynamisch bereik volgt dezelfde workflow als HDR-fotografie tussen haakjes. Er kunnen kleine verschillen zijn, dus hier is een overzicht van de werkstroom: configureer uw camera voor single-shot HDR. Het enige dat u zoekt, is de beste foto die u kunt maken. Besteed aandacht aan de lichtomstandigheden, het onderwerp, beweging en ...

Geavanceerde compacte en superzoomcamera's voor HDR-fotografie - dummies

Geavanceerde compacte en superzoomcamera's voor HDR-fotografie - dummies

Stap omhoog van compacte digitale camera's binnen het budgetbereik, vindt u duurdere compacte digitale camera's voor HDR-fotografie, ook wel high-end compacts, superzoomlenzen en dSLR-look-alikes genoemd. Er zijn zoveel vaak overlappende categorieën dat het je hoofd laat draaien. De twee dingen die deze reeks camera's gemeen hebben, zijn hun ...

Bewerkers keuze

In te schakelen Class Tracking in QuickBooks 2013 - dummies

In te schakelen Class Tracking in QuickBooks 2013 - dummies

Om activity-based costing te gebruiken (ABC ) in QuickBooks 2013 moet u de QuickBooks Class Tracking-functie inschakelen. Met Class Tracking kunt u inkomsten- en onkostentransacties categoriseren als niet alleen vallen in inkomsten- en uitgavenrekeningen, maar ook als vallen in bepaalde klassen. Volg deze stappen om Class Tracking in QuickBooks in te schakelen: Kies Bewerken → Voorkeuren ...

Gebruikt om een ​​exemplaar van een QuickBooks-gegevensbestand te gebruiken - dummies

Gebruikt om een ​​exemplaar van een QuickBooks-gegevensbestand te gebruiken - dummies

Ongeacht of de client verzendt handmatig een accountantskopie van een QuickBooks-gegevensbestand, e-mails een accountantsexemplaar, of verzendt een accountantskopie via de Intuit-bestandsoverdrachtservice, u gebruikt de kopie van de accountant door Bestand → Verzend bedrijfsdossier → Accountantskopie → Open & converteer overzetten te kiezen Bestand commando. Wanneer u deze opdracht kiest, geeft QuickBooks een ...

Hoe Audit Trails te gebruiken in QuickBooks - dummies

Hoe Audit Trails te gebruiken in QuickBooks - dummies

Als u besluit om meerdere gebruikers toegang te geven tot de QuickBooks-gegevens bestand, zult u de QuickBooks Audit Trail-functie waarderen, die bijhoudt wie welke wijzigingen aan het QuickBooks-gegevensbestand aanbrengt. U kunt transacties niet verwijderen uit de lijst of geschiedenis van de audittrail, behalve door gegevens te archiveren en te condenseren. Audit trail inschakelen ...