Zuhause Persönliche Finanzen Programmierung mit Java: Einige Bemerkungen zu Android-Klassen - Dummies

Programmierung mit Java: Einige Bemerkungen zu Android-Klassen - Dummies

Inhaltsverzeichnis:

Video: Linux Tutorial for Beginners: Introduction to Linux Operating System 2024

Video: Linux Tutorial for Beginners: Introduction to Linux Operating System 2024
Anonim

Wenn Sie ein neues Java-Projekt starten, bietet Android Studio an, eine Aktivität für Ihr Projekt zu erstellen. Android Studio bietet Ihnen verschiedene Aktivitäten an, z. B. eine einfache Aktivität, eine leere Aktivität, eine Login-Aktivität und so weiter. Wenn Sie nach einer leeren Aktivität fragen, erhalten Sie diesen Code:

Paket com. Allyourcode. a10_11;

Import Android. Unterstützung. v7. App. AppCompatAktivität;

Import Android. os. Bündeln;

public class MainActivity erweitert AppCompatActivity {

@Override

geschützt void onCreate (Bundle savedInstanceState) {

super. onCreate (gespeicherterInstanzStatus);

setContentView (R. layout. Activity_main);

}

}

Der Code deklariert eine Klasse namens MainActivity . Dieser Name MainActivity ist nicht Teil der Android API-Bibliothek. Es ist ein Name, den Sie beim Erstellen eines neuen Android-Projekts festlegen. (Eigentlich macht Android Studio den Namen. Sie akzeptieren den Namen oder ändern ihn in einen anderen Namen, wenn Sie die Schritte befolgen, um ein neues Projekt zu erstellen.)

Die MainActivity -Klasse erweitert eine Klasse, die gehört in die SDK-Bibliothek von Android, nämlich die AppCompatActivity -Klasse. Mit anderen Worten ist das MainActivity -Objekt ein AppCompatActivity -Objekt. Das MainActivity -Objekt verfügt über alle Rechte und Verantwortlichkeiten, die jede AppCompatActivity -Instanz hat. Beispielsweise verfügt MainActivity über eine Methode onCreate , die überschrieben wird.

In der Tat erbt die MainActivity -Klasse etwa 460 Codezeilen aus der AppCompatActivity -Klasse von Android, die etwa 1 000 Zeilen von Android FragmentActivity -Klasse, die etwa 6,700 Zeilen von der Activity-Klasse von Android erbt. Zu den geerbten Methoden gehören solche wie getCallingActivity , getCallingPackage , getParent , getTitle , getTitleColor , getWindow , onBackPressed , onKeyDown , onKeyLongPress , onLowMemory , onMenuItemSelected , setTitle <, setTitleColor , startActivity , beenden und viele, viele andere. Sie erben alle diese Funktionen mit zwei einfachen Worten: extends AppCompatActivity . In der Terminologie familiärer Beziehungen ist Ihre

MainActivity -Klasse ein Nachkomme der Android-Klasse Activity . Ihre MainActivity Klasse ist eine Art Aktivität . Dieses Bild, das direkt aus der Online-Dokumentation von Android stammt, fasst diese Informationen zur

AppCompatActivity -Klasse zusammen. Ein AppCompatActivity-Stammbaum.

Markieren Sie die Seite, um einfachen Zugriff auf die API-Bibliotheksdokumentation von Android zu erhalten.

Neben der Unterklasse implementiert die

AppCompatActivity -Klasse eine Reihe von Schnittstellen, darunter die AppCompatCallback -Schnittstelle, die TaskStackBuilder -Schnittstelle und andere. Sie müssen sich an nichts davon erinnern. Wenn Sie es jemals wissen müssen, können Sie es auf der Dokumentationsseite von Android nachschlagen. Das Super-Schlüsselwort von Java, revisited

Das Wort

super steht für den Konstruktor der Superklasse. Anderer Code verwendet das Schlüsselwort super auf unterschiedliche Weise. Ja, super hat immer etwas mit der Elternklasse einer Klasse zu tun. Aber nein, super bezieht sich nicht immer auf den Konstruktor der übergeordneten Klasse. Bei einer

onCreate -Methode ist der Aufruf super. onCreate (savedInstanceState) sendet savedInstanceState an die onCreate -Methode der übergeordneten Klasse. Die übergeordnete Klasse ist die AppCompatActivity -Klasse. Java ruft also die Methode AppCompatActivit y onCreate auf. Die

onCreat e-Methode der AppCompatActivity -Klasse enthält einen eigenen Aufruf von super. onCreate (gespeicherterInstanzStatus) . Das übergeordnete Element der AppCompatActivity -Klasse ist die FragmentActivity -Klasse. So übergibt Java savedInstanceState an die onCreate -Methode der FragmentActivity -Klasse. Und so weiter. Erst in der Klasse

Activity - der Urgroßmutter Ihrer M ainActivity -Klasse - verwendet der Code direkt die Variable savedInstanceState . Von dieser savedInstanceState Information setzt der Code die Aktivität so zurück, wie sie war, bevor das System sie zerstört hat. Casting, wieder

Wenn Sie

findViewById aufrufen, weiß Java nicht, welche Art von Ansicht es finden wird. Die findViewById -Methode gibt immer eine View -Instanz zurück, aber viele Android-Klassen erweitern die View -Klasse. Zum Beispiel die Klassen Button , TextView , ImageView , CheckBox , Chronometer und RatingBar erweitern die Android View -Klasse. Wenn Sie den folgenden Code eingeben: // TUN SIE DIES NICHT! !

TextView textView;

textView = findViewById (R. Id. TextView);

Java lässt einen durchdringenden, nachtragenden Dröhner raus: "Wie können Sie es wagen, davon auszugehen, dass das durch einen Aufruf von

findViewById zurückgegebene Objekt auf eine Instanz der TextView -Klasse verweist! "(Tatsächlich zeigt Java leise und mechanisch eine Inkompatible Typen Fehlermeldung im Editor von Android Studio an.) Eingrenzen

bedeutet, einem einen langen Wert zuzuweisen > int Wert. Ein langer -Wert hat 64 Bit und ein int -Wert hat nur 32 Bit. Der Versuch einer Verengung scheitert also. In dem Code, den Sie hier finden, ist der Aufruf von findViewById ein weiterer Versuch, eine Verengung vorzunehmen. Dabei wird der View -Wert zugewiesen, der von einem Methodenaufruf an eine TextView -Variable zurückgegeben wird.Die TextView -Klasse ist eine Unterklasse der View -Klasse, sodass die Zuordnung kläglich fehlschlägt. Beschwichtigen Sie die Java-Götter, indem Sie dem Code einen Casting-Operator hinzufügen. Sie weisen Java an, alles, was aus dem Methodenaufruf

findViewById herauskommt, in ein TextView -Objekt umzuwandeln. textView =

(TextView) findViewById (R. Id. TextView1); Während Sie den Code eingeben, nimmt Sie Java zur Kenntnis und sagt: "Ihr Casting-Operator zeigt mir, dass Sie den Unterschied zwischen

TextView und jeder alten Ansicht kennen… Ich werde mein Bestes tun, um das View -Objekt zu interpretieren, das ich zur Laufzeit als TextView -Objekt finde. "(Tatsächlich, während Sie den Code eingeben, sagt Java nichts. Die Tatsache, dass Java keine Fehlermeldungen anzeigt, wenn Sie diesen Casting-Trick verwenden, ist ein gutes Zeichen. Java Casting-Funktion rettet den Tag!) Casting verhindert, dass Sie eine Fehlermeldung sehen, während Sie Ihren Code entwickeln. Auf diese Weise ist das Casting ein nützliches Feature von Java. Das Casting kann Sie jedoch nicht speichern, wenn Ihr Code Laufzeitfehler enthält. Wenn Sie

eingeben textView = (TextView) findViewById (R. Id. TextView1);

Sie überprüfen, ob der Name

textView ein TextView Widget ist. Wenn die App ausgeführt wird, greift Java auf das R zu. Ich würde. textView widget aus dem activity_main. xml Datei, und alles funktioniert gut. Aber Sie können manchmal vergessen, Ihr R zu überprüfen. Java benennt die Komponenten in der XML-Datei. Ein Aufruf von findViewById spuckt überraschenderweise eine Button -Komponente aus, wenn Ihr Casting Java anweist, ein TextView -Widget zu erwarten. Wenn dies geschieht, verschluckt Java den Casting-Operator und Ihre App stürzt während des Laufs ab. Zurück zum Zeichenbrett!

Programmierung mit Java: Einige Bemerkungen zu Android-Klassen - Dummies

Die Wahl des Herausgebers

Bearbeiten in Photoshop Elements 10 Schnellfoto-Bearbeitungsmodus - Schnuller

Bearbeiten in Photoshop Elements 10 Schnellfoto-Bearbeitungsmodus - Schnuller

Schneller Foto-Bearbeitungsmodus ist eine abgespeckte Version des Modus "Full Photo Edit", der einfach grundlegende Fixingtools bereitstellt und mit einigen einzigartigen Funktionen aufwartet, z. B. eine Vorher-Nachher-Vorschau Ihres Bildes. Hier ist ein Schritt-für-Schritt-Workflow, den Sie im Schnellfoto-Bearbeitungsmodus verwenden können, um Ihre Fotos zu reparieren:

Zum Optimieren von Photoshop Elements-Bildern mit Fotoeffekten - Dummies

Zum Optimieren von Photoshop Elements-Bildern mit Fotoeffekten - Dummies

Fotoeffekte in Photoshop Elements 11 funktionieren wie Anwenden von Filtern; Das Dialogfeld "Filtergalerie" bietet Ihnen zahlreiche Optionen zum Anwenden eines Filters. Das geführte Bedienfeld bietet Ihnen Filtereffekte und führt Sie dann durch die Schritte zum Anpassen von Helligkeitswerte, Ändern von Farbton und Sättigung und Durchführen weiterer Anpassungen zum Vervollkommnen des Ergebnisses. Sie ...

Eingeben des Absatztyps in Photoshop Elements 11 - Dummies

Eingeben des Absatztyps in Photoshop Elements 11 - Dummies

Absatztyp in Photoshop Elements 11 ist ähnlich zu dem Text, den Sie in ein Textverarbeitungsprogramm eingeben, mit der Ausnahme, dass er in einem Textfeld oder einem Begrenzungsrahmen enthalten ist. Wenn Sie größere Textabschnitte haben, die Sie in ein Bild eingeben möchten, ist die Eingabe des Textes als Absatztyp die praktischste Option. Während ...

Die Wahl des Herausgebers

PHP-Anweisungen - Dummys

PHP-Anweisungen - Dummys

PHP ist eine Skriptsprache, die speziell für die Verwendung im Internet entwickelt wurde. Es enthält Funktionen, die Sie bei der Programmierung der Aufgaben unterstützen, die für die Entwicklung dynamischer Webanwendungen erforderlich sind. Diese Tabelle gibt einen kurzen Überblick über einige der Anweisungen, die Sie häufig verwenden werden: Anweisung Beschreibung array ("key" => "value", ...); Casts a ...

PHP-Schablonen-Systeme - Schablonen-Systeme

PHP-Schablonen-Systeme - Schablonen-Systeme

Können die Menge an Arbeit reduzieren, die Sie für die Erstellung einer Website in PHP benötigen. Wenn Sie eine Website erstellen, verwenden Sie häufig das gleiche Layout für die gesamte Website. Sie haben eine obere Portion, vielleicht mit einem Menü; ein Hauptinhaltsbereich; und ein unterer Teil, vielleicht mit Links oder ...

Make MySQL Datenbank Änderungen mit den ALTER Query - Dummies

Make MySQL Datenbank Änderungen mit den ALTER Query - Dummies

Die ALTER Query wird verwendet, um die Struktur von eine MySQL-Datenbank. In dieser Liste wird die Syntax für die Änderungen angezeigt, die Sie wahrscheinlich vornehmen möchten: ADD-Spaltenbezeichnung ALTER-Spaltenname SET-DEFAULT-Wert ALTER-Spaltenname DROP DEFAULT CHANGE-Spaltenname newcolname-Definition DROP-Spaltenname MODIFY-Spaltenname RENAME newtablename

Die Wahl des Herausgebers

Hochgeschwindigkeitsdatencaching mit NoSQL - Dummies

Hochgeschwindigkeitsdatencaching mit NoSQL - Dummies

Mit NoSQL haben Sie Hochgeschwindigkeits-Caching. Stellen Sie sich vor, Sie sind Bankangestellte und arbeiten mit drei anderen Kollegen zusammen. Jeder hat eine Reihe von Leuten, die bedient werden sollen. Einer der Kunden bleibt jedoch in der Schlange, um zu fragen, ob sein Scheck bereits eingelöst und der Betrag seinem Konto gutgeschrieben wurde. Wenn Sie ...

Wie man Einsichten aus Big Data kommuniziert - Dummies

Wie man Einsichten aus Big Data kommuniziert - Dummies

Big Data kann helfen, Einblicke zu gewinnen. Unternehmen gewinnen Wettbewerbsvorteile, wenn die richtigen Informationen zur richtigen Zeit an die richtigen Leute geliefert werden. Dies bedeutet, Erkenntnisse und Informationen aus Daten zu extrahieren und sie Entscheidungsträgern auf eine Weise zu vermitteln, die sie leicht verstehen. Schließlich sind Menschen weniger wahrscheinlich zu handeln, wenn sie ...

Zookeeper und HBase Reliability - dummies

Zookeeper und HBase Reliability - dummies

Zookeeper ist ein verteiltes Cluster von Servern, das gemeinsam zuverlässige Koordinations- und Synchronisationsdienste für Cluster-Anwendungen bereitstellt. .. Zugegeben, der Name "Zookeeper" mag auf den ersten Blick eine seltsame Wahl sein, aber wenn Sie verstehen, was es für einen HBase-Cluster tut, können Sie die Logik dahinter sehen. Beim Erstellen und Debuggen von verteilten Anwendungen ...