Ответ 1
Идентификатор не является уникальной ссылкой.
Однако на практике вы различаете, используя родительский вид.
Если мы считаем, что 'this' - это Activity, настроенный с макетом, который содержит ваши кнопки, тогда:
Button button = (Button) this.findViewById( R.id.id_name );
вернет первый, который он найдет в макете (я думаю - не уверен, что фактическое поведение определено).
Однако то, что вы можете сделать, это вызвать findViewById
в каком-то родительском представлении, содержащем только один такой экземпляр с этим идентификатором.
LinearLayout okParent = (LinearLayout) this.findViewById( R.id.okLayout );
LinearLayout cancelParent = (LinearLayout) this.findViewById( R.id.cancelLayout );
Button okButton = (Button) okParent.findViewById( R.id.id_name );
Button cancelButton = (Button) cancelParent.findViewById( R.id.id_name );
Концептуально, это своего рода поиск по пути. Вы должны быть осторожны при разработке своих макетов, чтобы это было возможно.