Verstehen Sie die R-class in Android

Bei Android bin ich mir nicht sicher, ob ich die R class wirklich verstehe. Ich gehe durch das Sudoku-Beispiel, und ich habe diesen Codeschnipsel:

 switch (v.getId()) // the id of the argument passed is evaluated by switch statement { case R.id.about_button: // Intent i = new Intent(this, about.class); startActivity(i); break; // More buttons go here (if any) ... } 

Ich bin brandneu in Java, aber von dem, was ich erfahre, sieht es so aus, als würde es Eingaben machen (der Touchscreen wird auf den Knopf gedrückt) und das Argument bewertet. Dann wird die case-statement eingerichtet, wenn der About-Button erkannt wird und ein neuer Interface-Bildschirm erstellt und dann auf dem Telefon navigiert wird.

Ist das richtig?

Wenn ich das Wesentliche richtig verstanden habe, warum ist der Deal mit der class “R”?

Warum heißt es, die ID des Buttons zu erkennen?

Ich dachte, die Superklasse (in diesem Projekt) war die SudokuActivity class.

   

R.java ist die dynamisch generierte class, die während des Erstellungsprozesses erstellt wurde, um alle R.java (von Zeichenfolgen bis hin zu Android-Widgets zu Layouts) dynamisch zu identifizieren und in Java-classn in der Android-App zu verwenden. Beachten Sie, dass R.java Android-spezifisch ist (obwohl Sie es möglicherweise für andere Plattformen kopieren können, es ist sehr praktisch), also hat es nicht viel mit Java-Sprachkonstrukten zu tun. Hier finden Sie weitere Details.

R ist eine class, die NUR öffentliche Konstanten enthält. (öffentliches statisches Finale)

Es ist eine generierte class (durch Android Plugin in Eclipse), die die verschiedenen Werte widerspiegelt, die Sie in der res Datei definiert haben.

Zum Beispiel sollten Sie etwas haben wie:

 android:id="@+id/about_button" 

Irgendwo in einer deiner Layout / Menü-XML-Dateien im Projekt, und sobald du das geschrieben hast, erzeugt Eclipse eine Konstante in der R-Datei (die du unter gen/PACKAGE/R.java )

Weitere Informationen hierzu finden Sie im Ressourcenhandbuch in Android-Entwicklern .

R class wird von Android-Tools aus Ihren Ressourcen generiert, bevor Sie Ihren Code kompilieren. Sie enthält eine zugewiesene numerische Konstante für jede Ressource, auf die Sie in Ihrem Projekt verweisen können. Zum Beispiel haben Sie eine XML-Ressourcendatei, die about_button enthält. Wenn Sie keine R class hätten, müssten Sie eine Zeichenfolge “about_button” verwenden, um im Code darauf Bezug zu nehmen. Wenn Sie in dieser Zeichenfolge einen Fehler machen, erfahren Sie nur, wenn Sie Ihre Anwendung ausführen. Mit R Sie den Fehler viel früher zur Kompilierzeit.

R ist so strukturiert, dass Sie über seine inneren classn auf Ressourcen verweisen können. Zum Beispiel enthält R.id ID-Konstanten und R.layout enthält Layout-Konstanten.