2013-12-17 3 views
1

моей кнопка имеет строкового идентификаторПолучить строку идентификатор кнопки

<RadioButton 
android:id="@+id/Dirty" 
android:text="Very Dirty" 

, и я хотел бы использовать имя Грязного в моем коде, но я не могу использовать получить текст, так как отображаемое имя кнопки радиосистемы отличное от того, что мне нужно, и чтобы Id возвращал целое число.

Любые предложения о том, как получить «Грязный» с помощью выбранного переключателя?

Спасибо.

Код (из комментариев)

RadioButton rb = (RadioButton) findViewById(selectedId); 
String sel = (String) rb.getText(); 
+2

Вы можете оставить свой код? – MikeKeepsOnShine

+0

RadioButton rb = (RadioButton) findViewById (selectedId); Строка sel = (String) rb.GetText(); – user3170

ответ

-1

Попробуйте это:

int selectedRdBtnId = radioGroup.getCheckedRadioButtonId(); 
radioButton = (RadioButton) findViewById(selectedRdBtnId); 
String rbText = radioButton.getText(); 

Edit:

Для получения идентификатора, я хотел бы предложить реализацию onCheckedChangeListener.

radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { 

    @Override 
    public void onCheckedChanged(RadioGroup radioGroup, int radioButtonID) { 
     //radioButtonID contains selected radio button's ID. 

     case R.id.dirty: 
      //do something 
      break; 
     case R.id.clean: 
      //something else 
      break; 
     default: 
      //default action 
      break; 
    } 
}); 

Надеюсь, это поможет.

+0

getText просто возвращает отображаемое имя кнопки, а не имя идентификатора кнопки. – user3170

+0

@ user3170 Проверить отредактированный ответ –

+0

Дело в том, что я знаю, какой переключатель выбран, и я могу получить идентификатор, но идентификатор всегда будет возвращать целое число. Мне нужно имя строки, которое я дал кнопке в качестве идентификатора. – user3170

0

для получения имени компонента использования GetName(). Я думаю, что это поможет?

+0

нет такого метода, как getname – user3170

0

Попробуйте набор тегов для вашей кнопки радио и получить этот тег в вас класс Java

Xml

android:tag="Dirty" 

Src

rb.getTag().toString(); 
+0

getText просто возвращает отображаемое имя кнопки, а не имя идентификатора кнопки. – user3170

+0

проверить отредактированный ответ –

5

Используйте getResourceEntryName метод:

RadioButton myButton = (RadioButton) findViewById(R.id.button1); 
    String s = myButton.getResources().getResourceEntryName(R.id.button1); 
+0

+1 для правильного решения – Melquiades

+0

Это правильный ответ! – ikevin8me

0

Обходной бы добавить тег с таким же именем, как идентификатор для вашей кнопки радио (в дополнение к идентификатору):

<RadioButton 
    android:id="@+id/Dirty" 
    android:tag="Dirty" 
    android:text="Very Dirty" 
    /> 

Затем в коде вы можете получить бирку строки:

RadioButton radioButton = (RadioButton)findViewById(R.id.Dirty); 
String tag = (String) radioButton.getTag(); 

Таким образом, неудобство было бы добавить теги к вашим переключателям, которые совпадают с их идентификатором.

0

Если вы хотите использовать строку для ссылки на свою кнопку, вы должны использовать Tag вместо Id.

0

Я думаю, вы можете найти ответ here.

это один

getResources().getResourceName(int resid); 

кажется полезным для вас.

Смежные вопросы