2010-09-15 14 views
17

Ich bin auf der Suche nach Möglichkeiten zu reduzieren, was ich "id Verschmutzung" in meinen Apps nennen würde. Von dem, was ich sagen kann, R.id ist global für die Anwendung, so dass ich in jeder Aktivität in der Regel eindeutige Ressourcen-ID-Werte für Elemente erstellen, auch wenn ich viele der gleichen Sache habe. wenn ich drei Aktivitätsklassen Zum Beispiel haben, jeweils mit einer Taste speichern und beenden, würde ich sechs einzigartigen IDs für R.id wie definieren:Umfang der R.id-Werte

R.id.actOne_save 
R.id.actOne_cancel 
R.id.actTwo_save 
R.id.actTwo_cancel 
R.id.actThree_save 
R.id.actThree_cancel 

Dies ist für mich nicht notwendig scheint, wie ich wirklich nur sollte zwei laufen müssen auf jede Aktivität. Was sind einige der Praktiken, die Sie alle beim Generieren von Ressourcen-IDs verwenden? Benutzt du sie zwischen Aktivitäten? Ist das in Ordnung, wenn eine ID auf zwei Activites (vielleicht eine Pause und ein Vordergrund) gleichzeitig existiert? Ich habe Angst vor unheimlichem Verhalten wie ein Knopfdruck, der zu viele Zuhörer trifft!

Antwort

20

Sie können dieselbe ID für mehrere Elemente verwenden, solange sie nicht in derselben Ansicht sind. Also, alle Ihre Speicherschaltflächen können die ID btn_save haben und solange es nicht zwei davon in der gleichen Layoutdatei oder in angehängten Layouts gibt, geht es Ihnen gut.

+2

Danke, das macht Sinn gegeben findViewById() wird von einer Aktivität oder View, anstelle der Anwendung aufgerufen. Prost! – Devunwired

+1

Dies ist zu diesem Zeitpunkt nur 50% wahr, weil Sie im Editor R.ids von fremden Aktivitäten sehen können, so dass Sie denken, einer von ihnen gehört Ihnen, auch wenn er in Ihrer Aktivität nicht existiert. – user250343

+0

@Martyn, was genau meinst du mit "in der gleichen Ansicht"? Wenn ich ein Aktivitätslayout mit zwei Fragmentlayouts habe, wobei jedes Fragment ein 'id = "@ + id/button_ok" enthält, wäre das ein Problem, weil sie dieselbe Elternansicht haben? – bcorso

4

Ich benutze:

R.id.activityName_type_action

wo Typ sein kann [btn | txtview | EditText | Listenansicht ...]

und Aktion so etwas wie ist [save | del | accept | name | pin ...]

Es ist ziemlich ausführlich, aber auf diese Weise kann ich den Namen des Bezeichners aus der Aktivität erraten, ohne ihn ständig überprüfen zu müssen XML-Layout

Zum Beispiel:

R.id.loginpin_btn_accept

R.id.loginpin_txtview_pin

1

Die anderen Antworten wird funktionieren, aber man könnte auch eine save_button.xml in Ihrem Layout-Ordner machen, mit <Button> als Root-Tag. Dann referenziere die ID dieses Typen an den Stellen, an denen du sie brauchst. Dies bedeutet, dass Sie nur einen "Speichern" -Button definieren müssen und ihn überall verwenden können.