2017-02-27 14 views
1

ラジオボタンがクリック登録を示すコードを記述しようとしています。理想的には、ラジオボタンが選択されると、TextViewの内容が変更されます。まず、「北」のラジオボタンがあります。 Northをチェックすると、TextViewの内容は「North」になります。私はアクションリスナーが関わっていることを知っていますが、私はJavaに精通していません。これは確かに私のJavaチェリーをポップするでしょう。それは、私が書いたコードは動作していないと言われています。私が正しい道を歩いているかどうか、誰かに教えてもらえますか?これはクラスの割り当てではないことに注意してください。これは私が別の人と一緒に作業している非常にオープンエンドのクラスのプロジェクトです。Android:ラジオボタンを使用してテキストビューの内容を変更する

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

XMLも表示します。 XMLの 'onClick'リスナーを' onRadioButtonClicked'に設定することを忘れないでください。 –

答えて

1

あなたはRadioGroup名前付きセット、に、より良いグループにRadioButton Sの束をいただきたいRadioButtonを適切に使用するには

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

を試してみてください。

<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> 


重要な部分は、各RadioButtonのためのユニークなandroid:idを設定する必要がある、または彼らは動作しません!

次に、XMLからRadioButtonを探します。

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); 

最後に、RadioButton.OnClickListenerクラスのインスタンスを作成し、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); 


を追加しました:

すみませんが、私はsetOnClickListenerを(呼び出しているので、私の答えの編集されたバージョンを理解することができませんでした)View.OnClickLister.OnClick内部()は私にとって幾分奇妙だった。
私は元の回答にロールバックしました。

+0

'rb1.setOnClickListener(optionOnClickListener);'を作成すると、エラーが発生します。 }それは}の外に置かれるはずです。 ? –

+0

@JohnCaseyどのエラーが表示されますか?あなたのrb1がその時点でヌル(初期化)でないことを確認してください。 –

+0

setOnClickListenerを解決できません。また、optionOnClickListenerには赤で下線が引かれています。 –

0

xmlファイルを確認してください。ラジオボタンはラジオグループ内にある必要があります。

<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> 

は、それが動作します

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 
      } 
     } 
    }); 

あなたのjavaファイルに変更.. :) :)

0

わかりましたので、作る 'onCheckedChange' onClickイベントは、トリックを行うように見えました。すべての援助の人に感謝します。

関連する問題