dポイントプレゼントキャンペーン実施中!

趣味でandroidの開発を楽しんでおります(プログラム初心者)

現在計算させるツールを製作しています。

例えば、
100+xという計算式があるとします。

そこで、ラジオボタン2つをradio0を選択するとx=100、radio1を選択するとx=200という数値を持たせたいと考えております。
そしてボタンを押すとその計算結果をTextViewに表示させたいです。.

現在コードを作っていますが、選択によって数値を変える所までは出来た(?)んですがそれを計算させて表示させるコードをどの部分に書いたらいいのか分かりません。
下記のコードだとボタンを押したときに計算されるのではなく、チェックボタンを押したときに計算されてしまいます。

final Button btn2 = (Button) findViewById(R.id.keisan2); //計算ボタン
btn2.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
keisan2();
}
});

public void keisan2 (){
final RadioGroup group = (RadioGroup)findViewById(R.id.radioGroup1);
group.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
public void onCheckedChanged(RadioGroup arg0,int arg1){
int x;
if(arg0 == group){
switch(arg1){
case R.id.radio0:
x = 100;
int y = 100 + x;
men.setText(String.valueOf(y));
break;
case R.id.radio1:
x = 200;
int z = 100 + x;
men.setText(String.valueOf(z));
break;
}
}
}
});

初歩的な質問ですがご教授の程よろしくお願いします。

A 回答 (1件)

おそらく、コードの内容を理解されていないのだろうと思います。

ボタンをクリックした時にkeisan2を実行していますが、このkeisan2で行なっているのは、計算そのものではなく、RadioGroupにCheckedChangeイベント処理のためのリスナーを登録する作業です。ですから、こんな感じで内容を整理してみてください。

1. ラジオボタンのイベント処理を登録するgroup.setOnCheckedChangeListenerの部分を、keisan2 からonCreateなどに移動する。

2. onCheckedChanged内にある処理を整理する。switchでどのラジオボタンのイベント化をチェックしたら、インスタンス変数などにxの値(100または200)を保管するだけにする。

3. 計算の処理部分(計算し、結果をmen.setTextで表示している部分)を、ボタンのOnClickListenerにあるonClickメソッド内に移す。
    • good
    • 0
この回答へのお礼

無事処理できました。丁寧な説明ありがとうございました。

お礼日時:2012/11/26 22:31

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!