2012-04-15 9 views
1

Ich habe eine RadioGroup, die 4 RadioButtons enthält. Sie alle rufen dieselbe Methode auf, wenn sie angeklickt werden, ich weiß, wie man den Text erhält, der mit der Schaltfläche verknüpft ist, aber ich kann nicht herausfinden, wie man den NAMEN der ausgewählten Schaltfläche erhält.So rufen Sie den NAMEN einer Schaltfläche ab, wenn darauf geklickt wird (Android)

Sicher muss es einen Weg geben?

Danke für die Hilfe

+1

Könnten Sie die XML an D Java-Code haben Sie so weit für uns zu sehen :) – erbsman

Antwort

0

Sie ein Schaltergehäuse können mit jeder ID von Radiobutton mit view.getId() zu tun und Onclick einfach vergleichen und tut dann die Notwendigkeit voll Abrufen von Tastennamen.

Unten finden Sie die Beispielcode ::

switch (checkedRadioButton) { 
    case R.id.radiobutton1 : radioButtonSelected = "radiobutton1"; 
            break; 
    case R.id.radiobutton2 : radioButtonSelected = "radiobutton2"; 
           break; 
    case R.id.radiobutton3 : radioButtonSelected = "radiobutton3"; 
           break; 
} 

die LINK

, oder Sie können den folgenden Code verwenden, auch

RadioGroup rg = (RadioGroup)findViewById(R.id.radiogroup); 
RadioButton radioButton = (RadioButton) findViewById(rg.getCheckedRadioButtonId()); 
Log.d("checked",radioButton.getText().toString()); 
+0

Agarwal, Ich bin ein bisschen verwirrt von dem, was Sie über den Code geschrieben haben. Schlägst du vor, ich verwende getid(), um die ID der ausgewählten Schaltfläche herauszufinden und dann mit der ID aller Schaltflächen zu vergleichen, indem ich den Switch-Fall verwende? –

1

vielleicht das Sie auf dem Weg helfen könnte:

// radioGroup - you need to set this after creating the radiogroup, by findViewById done in the right place or just assigning upon creating it, depending on how you create your layouts. 
RadioButton radioButton = (RadioButton) findViewById(radioGroup.getCheckedRadioButtonId()); 
String text = radioButton.getText().toString(); 

lass es mich wissen, wenn es funktioniert :) Immer eifrig zu lernen und zu helfen!

+0

Das sah vielversprechend aus, aber Eclipse hat mir gesagt, dass ich das RadioGroup-Widget importieren soll, und dann bekam ich folgende Beschwerde: "Kann keine statische Referenz auf die nicht statische Methode getCheckedRadioButtonId() vom Typ RadioGroup" –

+0

statt RadioGroup (was ein a Klassenname) müssen Sie einen tatsächlichen Verweis auf Ihre initialisierte RadioGroup haben. – j0ntech

+0

Die Antwort laut jOntechs Kommentar aktualisiert. – erbsman

0

Ich nehme an, Sie verwenden View.OnClickListener für jeden RadioButton. Richtig?

Wenn ja, tun Sie das nicht. Der einfachste Weg, um RadioButton Klicks zu behandeln, ist stattdessen RadioGroup.OnCheckedChangeListener zu verwenden.

In Ihrem onCreate(...) nach dem Aufruf von setContentView(...)

die RadioGroup ... finden
RadioGroup rg = (RadioGroup) findViewById(R.id.my_rg); 
rg.setOnCheckedChangeListener(...); 

Der onCheckedChanged Zuhörer sieht wie folgt aus ...

public void onCheckedChanged(RadioGroup group, int checkedId) 

... so in den Hörer einfach tun die folgenden ...

RadioButton radioButton = (RadioButton) findViewById(checkedId); 
String text = radioButton.getText(); 
Verwandte Themen