Reputation: 63293
I'm looking for ways to reduce what I would call "id pollution" in my apps. From what I can tell, R.id
is global to the application, so in every Activity I usually create unique resource id values for elements, even if I have many of the same thing. For example, if I have three Activity classes, each with a save and cancel button, I would define six unique id's for R.id
like:
R.id.actOne_save
R.id.actOne_cancel
R.id.actTwo_save
R.id.actTwo_cancel
R.id.actThree_save
R.id.actThree_cancel
This seems unnecessary to me, as I should really only need two running on any Activity. What are some of the practices that you all use when generating resource ids? Do you reuse them between activites? Is that OK if an id exists on two Activites (maybe one paused and one foreground) at the same time? I'm afraid of weird behavior like a button click hitting too many listeners!
Upvotes: 19
Views: 2994
Reputation: 10738
The other answers will work, but you could also make a save_button.xml in your layout folder, with <Button>
as the root tag. Then reference that guy's id in those places that you need it. This means you only need to define one "save" button, and use it everywhere.
Upvotes: 1
Reputation: 38324
I use:
R.id.activityName_type_action
where type may be [btn|txtview|edittext|listview...]
and action is something like [save|del|accept|name|pin...]
It's pretty verbose, but this way I can guess the identifier name from the activity without having to continuosly check the xml layout.
For example:
R.id.loginpin_btn_accept
R.id.loginpin_txtview_pin
Upvotes: 4
Reputation: 16622
You're fine to use the same id across multiple elements, as long as they aren't in the same view. So, all your save buttons could have the id of btn_save
and as long as there aren't two of them in the same layout file, or attached layouts, then you're fine.
Upvotes: 24