2017-02-27 4 views
1

Also, ich versuche Code zu schreiben, der zeigt, dass Radio Button klickt Register. Wenn ein Optionsfeld ausgewählt wird, ändert sich idealerweise der Inhalt eines TextView. Um zu beginnen, habe ich einen Radiobutton für "Norden". Wenn Norden markiert ist, wird der Inhalt der Textansicht "Nord". Ich weiß, dass es Action-Listener gibt, aber ich kenne Java nicht. Dies wird sicherlich meine Java-Kirsche knallen. Davon abgesehen funktioniert der Code, den ich geschrieben habe, nicht. Kann mir jemand sagen, ob ich auf dem richtigen Weg bin oder Vorschläge mache? Beachten Sie, dass dies nicht für eine Klassenzuweisung gilt. Dies ist für ein sehr offenes Klassenprojekt, an dem ich mit einer anderen Person arbeite.Android: Ändern der Inhalte einer Textansicht mit einem Optionsfeld

public class MainActivity extends AppCompatActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

} 
public void onRadioButtonClicked(View v){ 
    TextView text = (TextView)findViewById(R.id.text); 

    RadioButton N = (RadioButton) findViewById(R.id.north); 

    //evaluates 'checked' value of radio button 
    boolean checked = ((RadioButton) v).isChecked(); 

if(N.isChecked()){ 

    text.setText("N"); 
} 
} 

}

+0

Zeigen Sie auch Ihre XML. Denken Sie daran, den 'onClick'-Listener in Ihrem XML auf' onRadioButtonClicked' zu setzen. –

Antwort

1

Versuchen

RadioGroup radioGroup = (RadioGroup) findViewById(R.id.your_radio_group_id); 
radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() { 
    @Override 
    public void onCheckedChanged(RadioGroup group, int checkedId) { 
     switch (checkedId) { 
      case R.id.north ; 
       // set text North for your textview here 
       break; 
      case R.id.another_radio_button_id: 
       // do something 
       break; 
     } 
    } 
}); 
2

RadioButton nutzen zu können, solltest du besser Gruppe eine Reihe von RadioButton s in einen Satz, mit dem Namen RadioGroup.

<RadioGroup 
    android:id="@+id/rg1" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" > 

    <RadioButton 
     android:id="@+id/rg1_rb1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="North" /> 

    <RadioButton 
     android:id="@+id/rg1_rb2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="South" /> 

    <RadioButton 
     android:id="@+id/rg1_rb3" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Whatever" /> 
</RadioGroup> 


Der kritische Teil ist, dass Sie einzigartige android:id für jeden RadioButton s, oder sie wird nicht funktionieren, setzen müssen!

Als nächstes finden Sie RadioButton s aus Ihrem XML.

RadioButton rb1, rb2, rb3; 

rb1 = (RadioButton) findViewById(R.id.rg1_rb1); 
rb2 = (RadioButton) findViewById(R.id.rg1_rb2); 
rb3 = (RadioButton) findViewById(R.id.rg1_rb3); 

Schließlich bereiten eine RadioButton.OnClickListener Klasseninstanz und befestigen Sie es an RadioButton s.

View.OnClickListener optionOnClickListener 
      = new View.OnClickListener() { 

    public void onClick(View v) { 
     TextView tv = (TextView) findViewById(R.id.textview); 
     String str = null; 

     // you can simply copy the string of clicked button.    
     str = ((RadioButton)v).getText().toString(); 
     tv.setText(str); 

     // to go further with check state you can manually check each radiobutton and find which one is checked. 
     if(rb1.isChecked()) { 
      // do something 
     } 
     if(rb2.isChecked()) { 
      // do something 
     } 
     if(rb3.isChecked()) { 
      // do something 
     } 
    } 
}; 

rb1.setOnClickListener(optionOnClickListener); 
rb2.setOnClickListener(optionOnClickListener); 
rb3.setOnClickListener(optionOnClickListener); 

// check rb1 by default, if you want. 
rb1.setChecked(true); 


ZUSÄTZLICH:

Es tut mir leid, aber ich konnte die bearbeitete Version meiner Antwort, seit dem Aufruf setOnClickListener() innerhalb des View.OnClickLister.OnClick nicht verstehen() war etwas komisch für mich.
Also rollte ich zurück zu meiner ursprünglichen Antwort.

+0

Wenn ich den 'rb1.setOnClickListener (optionOnClickListener);' erstelle, bekomme ich Fehler. Soll es außerhalb des} platziert werden; ? –

+0

@JohnCasey Welchen Fehler bekommen Sie? Stellen Sie sicher, dass Ihr rb1 an diesem Punkt nicht Null (initialisiert) ist. –

+0

setOnClickListener kann nicht aufgelöst werden. Außerdem ist optionOnClickListener rot unterstrichen. –

0

Überprüfen Sie Ihre XML-Datei. Radio-Button muss in der Radio-Gruppe für die Arbeit perfekt sein.

<RadioGroup 
     android:id="@+id/Type" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 

     <RadioButton 
      android:id="@+id/n" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:text="I am a Blood Donor" /> 

     <RadioButton 
      android:id="@+id/s" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      /> 
    </RadioGroup> 

dann in Ihre Java-Datei

ändern
mRadioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { 
     @Override 
     public void onCheckedChanged(RadioGroup radioGroup, int i) { 
      if (i == R.id.s) { 
       //Your action 
      } else if (i == R.id.n) { 
       //Your action 
      } 
     } 
    }); 

es funktioniert .. :) :)

0

Okay, so macht 'onCheckedChange' schien das OnClick-Ereignis den Trick zu tun. Danke für die Hilfe Leute.

Verwandte Themen