2010-09-15 12 views
17

Poszukuję sposobów zmniejszenia tego, co nazywam "zanieczyszczeniem id" w moich aplikacjach. Z tego co mogę powiedzieć, R.id jest globalna dla aplikacji, więc w każdym działaniu zazwyczaj tworzę unikalne wartości identyfikatorów zasobów dla elementów, nawet jeśli mam wiele takich samych rzeczy. Na przykład, jeśli mam trzy klasy działania, z których każdy strzał i anuluj, chciałbym zdefiniować sześć unikalnych identyfikatorów dla R.id jak:Zakres wartości R.id

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

Wydaje niepotrzebny mi, jak mam naprawdę wystarczy dwa działa na dowolna aktywność. Jakie są niektóre z praktyk, z których wszyscy korzystacie podczas generowania identyfikatorów zasobów? Czy wykorzystujesz je ponownie między działaniami? Czy to jest w porządku, jeśli identyfikator istnieje w dwóch aktywacjach (może jeden wstrzymany i jeden nowy) w tym samym czasie? Obawiam się dziwnych zachowań, takich jak kliknięcie przycisku, które uderza zbyt wielu słuchaczy!

Odpowiedz

20

Możesz używać tego samego identyfikatora w wielu elementach, o ile nie są one w tym samym widoku. Tak więc wszystkie twoje przyciski zapisu mogą mieć identyfikator btn_save i tak długo, jak nie ma dwóch z nich w tym samym pliku układu lub załączonych układach, wszystko jest w porządku.

+2

Dzięki, to ma sens, biorąc pod uwagę, że findViewById() jest wywoływana z działania lub widoku, zamiast aplikacji. Twoje zdrowie! – Devunwired

+1

W tej chwili jest to tylko 50% prawdy, ponieważ w edytorze R.ids można zobaczyć z działań zagranicznych, więc możesz pomyśleć, że jedno z nich jest twoje, nawet jeśli nie istnieje ono w twojej działalności. – user250343

+0

@Martyn, co dokładnie masz na myśli mówiąc "w tym samym widoku"? Jeśli mam układ działania, który zawiera 2 układy fragmentów, każdy fragment zawierający "id =" @ + id/button_ok "byłby to problem, ponieważ mają one ten sam widok nadrzędny? – bcorso

4

używam:

R.id.activityName_type_action

gdzie typ może być [btn | txtview | EditText | ListView ...]

i działanie jest czymś [zaoszczędzić | del | accept | name | pin ...]

Jest dość gadatliwy, ale w ten sposób mogę odgadnąć nazwę identyfikatora z działania bez ciągłego sprawdzania układ xml.

Na przykład:

R.id.loginpin_btn_accept

R.id.loginpin_txtview_pin

1

innych odpowiedzi będzie działać, ale można również dokonać save_button.xml w folderze układu z <Button> jako znacznik główny. Następnie podaj identyfikator tego gościa w miejscach, które go potrzebują. Oznacza to, że musisz tylko zdefiniować jeden przycisk "zapisz" i używać go wszędzie.

Powiązane problemy