前提・実現したいこと
RadioButton男、RadioButton女、どちらか選択し、男、女でそれぞれ異なる計算処理を戻したい。
発生している問題・エラーメッセージ
無し
該当のソースコード
class MainActivity : AppCompatActivity() { //下記3つはEditText型 var editWeight = binding.weight var editAge = binding.age var editHight = binding.hight //下記2つはRadioButton型 val radioMan = binding.man val radioWoma = binding.woman //下記3つはButton型 val infoButton = binding.infoBtn val keisanButton = binding.keisanButton val nextButton = binding.nextBtn private lateinit var binding: ActivityMainBinding override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) binding = ActivityMainBinding.inflate(layoutInflater) setContentView(binding.root) binding.welcomDA.setText("WelcomDaietAdviser") binding.textView2.setText("まずは基礎代謝を計算しましょう!") } //もしmanが選択されたのあればkisotaisyManの計算結果をkisotaisyaTextviewに,womanであればkisotaisyaWomanをtextViewに //val kisotaisyaMan = 13.397 * weight + 4.799 * hight - 5.677 * age + 88.362 //val kisotaisyaWoman = 9.247 * weight + 3.098 * hight - 4.33 * age + 447.593 fun onClickCalcButton(view: View) { val weight2 = editWeight.text.toString().toFloat() val age2 = editAge.text.toString().toFloat() val hight2 = editHight.text.toString().toFloat() if (view is RadioButton) { val checked = view.isChecked var kisotaisyaMan: Float = 0f var kisotaisyaWoman: Float = 0f when(view.getId()){ //viewのidを取得 → もしこのview.getIdがmanなら〜、womannara〜 R.id.man -> if (checked){ kisotaisyaMan=(13.397*weight2+4.799*hight2-5.677*age2+88.362).toFloat() } R.id.woman -> if (checked){ kisotaisyaWoman=(9.247 * weight2 + 3.098 * hight2 - 4.33 * age2 + 447.593).toFloat() } } } val weight = editWeight.text.toString().toFloatOrNull() val age = editAge.text.toString().toFloatOrNull() val hight = editHight.text.toString().toFloatOrNull() //3つの内どれかがnullであればダイアログを表示させる処理 if (weight == null || age == null || hight == null) { AlertDialog.Builder(this) .setTitle(R.string.dialog_title_invalid_input).setPositiveButton(android.R.string.ok, null).show() return } val data: SharedPreferences = getSharedPreferences("DATA", Context.MODE_PRIVATE) val editor = data.edit() editor.putFloat("WEIGHT", weight) editor.putFloat("AGE", age) editor.putFloat("HIGHT", hight) editor.apply() startActivity(Intent(this, ResultActivity1::class.java).apply { putExtra("WEIGHT", weight) putExtra("AGE", age) putExtra("HIGHT", hight) }) } } 【activityMain.xml】 <TextView android:id="@+id/welcomDA" android:textSize="30sp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="WelcomDietAdviser" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintVertical_bias="0.060000002" /> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="まずは基礎代謝を計算しましょう!" android:textAppearance="@style/TextAppearance.AppCompat.Large" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/welcomDA" app:layout_constraintVertical_bias="0.07999998" /> <EditText android:id="@+id/weight" android:textSize="20sp" android:layout_width="70dp" android:layout_height="wrap_content" android:ems="10" android:hint="50kg" android:inputType="numberDecimal" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/textView2" app:layout_constraintVertical_bias="0.120000005" /> <EditText android:id="@+id/age" android:layout_width="70dp" android:layout_height="wrap_content" android:ems="10" android:hint="30歳" android:inputType="numberDecimal" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/weight" app:layout_constraintVertical_bias="0.120000005" /> <EditText android:id="@+id/hight" android:layout_width="70dp" android:layout_height="wrap_content" android:ems="10" android:hint="170cm" android:inputType="numberDecimal" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/age" app:layout_constraintVertical_bias="0.120000005" /> <TextView android:id="@+id/kisotaisya" android:textSize="30sp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="基礎代謝量" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/hight" app:layout_constraintVertical_bias="0.29000002" /> <Button android:id="@+id/nextBtn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@color/black" android:text="NEXT" android:textColor="@color/white" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.77" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/kisotaisya" app:layout_constraintVertical_bias="0.8" /> <RadioGroup android:id="@+id/radioGroup" android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" app:layout_constraintBottom_toTopOf="@+id/kisotaisya" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/hight"> <RadioButton android:id="@+id/man" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="男" android:onClick="onClickCalcButton" app:layout_constraintBottom_toTopOf="@+id/kisotaisya" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.37" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/hight" /> <RadioButton android:id="@+id/woman" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="女" android:onClick="onClickCalcButton" app:layout_constraintBottom_toBottomOf="@+id/man" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.65" app:layout_constraintStart_toStartOf="parent" /> </RadioGroup> <Button android:id="@+id/infoBtn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="情報を記録する" app:layout_constraintBottom_toTopOf="@+id/nextBtn" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/kisotaisya" /> <Button android:id="@+id/keisanButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="計算する" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toStartOf="@+id/nextBtn" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/kisotaisya" app:layout_constraintVertical_bias="0.79" />›4 ![イメージ説明](3340ff6cea762c3d4269dcb2c1ea937f.png)
試したこと
whenでの条件分岐を行いましたが、サイトを参考にしたため、いまいち理解ができておりません。
onClickCalcButtonメソッドの処理内容の理解として、
①editWeight.text.toString.toFloat()でフロート型に変換している。(age, hightも同じ処理)
②if文にて、もしviewがRadioButtonなら、When文にて引数viewのIDを参照して、manというIDなら、if(checked)←これはなんでしょうか?、kisotaisyaManの計算を行う、womanならkisotaisyawomanの計算を行う
流れとして、
身長、体重、年齢のEditTextにユーザー入力してもらった後、ラジオボタンで男か女か選び、その後にてtxtViewに計算結果を映し出すようにしたいです。
【下記は男女別での計算方法】
//val kisotaisyaMan = 13.397 * weight + 4.799 * hight - 5.677 * age + 88.362
//val kisotaisyaWoman = 9.247 * weight + 3.098 * hight - 4.33 * age + 447.593
補足情報(FW/ツールのバージョンなど)
初心者で就活用のポートフォリオを作成していて、何時間考えてもわからずお力をお借りしたいです。。。
助長な文で申し訳ございません。
またラジオボタンの選択処理と、男女別で計算を行う処理を分けた方がいいというアドバイスを頂き、何回も試しましたがどのようにすればいいかわかりませんでした。。
ここにより詳細な情報を記載してください。
回答2件
あなたの回答
tips
プレビュー