いつもお世話になります。
Android Studio内でのエラーについていくつかお聞きしたいです。
【前提】
就活に必要なダイエット関連のポートフォリオを作成しています
今回の構成画面ではユーザーの(身長)(体重)(年齢)(性別ラジオボタン)を入力して貰い、その結果を計算して基礎代謝を表示させたいです。
また、その結果を次回使う時のために共有プリファレンスに保存したと考えております。
【コード】
Kotlin
1import android.content.Intent 2import android.os.Bundle 3import android.preference.PreferenceManager 4import android.view.View 5import android.widget.EditText 6import android.widget.RadioButton 7import androidx.appcompat.app.AppCompatActivity 8import androidx.core.content.edit 9import com.test.dietadviser.databinding.ActivityMainBinding 10 11class MainActivity : AppCompatActivity() { 12 private lateinit var binding: ActivityMainBinding 13 14 //viewのidを変数に入れ、この.javaで使用できるようにしたフィールド 15 val weighttext = binding.weight 16 val agetext = binding.age 17 val highttext = binding.hight 18 19 override fun onCreate(savedInstanceState: Bundle?) { 20 super.onCreate(savedInstanceState) 21 setContentView(R.layout.activity_main) 22 binding = ActivityMainBinding.inflate(layoutInflater) 23 setContentView(binding.root) 24 25 //共有プリファレンスからInt型のkey,デフォルト0を取得 26 val pref = PreferenceManager.getDefaultSharedPreferences(this) 27 val weight = pref.getInt("WEIGHT", 0) 28 val age = pref.getInt("AGE", 0) 29 val hight = pref.getInt("HIGHT", 0) 30 31 //画面に共有プリファレンスからgetした値をそれぞれを表示させる 32 binding.weight.setText(weight)//左のweightがviewのidで、()の中が上で定義した共有プリファレンスを入れた変数 33 binding.age.setText(age) 34 binding.hight.setText(hight) 35 binding.welcomDA.setText("WelcomDietAdviser")//ここは適性な処理かは不明 36 37 binding.nextBtn.setOnClickListener { startActivity(intent) } //ボタンを押したら移動 38 binding.infoBtn.setOnClickListener { onSaveTap() } //基礎代謝情報を記録するsavebuttonメソッドを後に作成 39 val intent = Intent(this, ActiveActivity::class.java) 40 //基礎代謝計算後の値も移遷先へ移す 41 intent.putExtra("KISOTAISYA", RadioClicked()) 42 43 } 44 45 private fun onSaveTap(){ 46 val pref = androidx.preference.PreferenceManager.getDefaultSharedPreferences(this) 47 48 pref.edit{ 49 putInt("WEIGHT", weighttext) 50 putInt("AGE", agetext) 51 putInt("HIGHT", highttext) 52 apply() 53 } 54 } 55 56 //Radioボタンが押された時の処理関数 -> kisotaisyaMan(Woman共に),基礎代謝を計算する処理を入れた変数 57 fun RadioClicked(view: View): Double { 58 59 val kisotaisyaMan = 13.397 * weighttext + 4.799 * highttext - 5.677 * agetext + 88.362 60 val kisotaisyaWoman = 9.247 * weighttext + 3.098 * highttext - 4.33 * agetext + 447.593 61 62 if (view is RadioButton){ 63 val checked = view.isChecked 64 when (view.getId()){ 65 R.id.man -> if(checked){ 66 //manButtonが押された時の処理 -> kisotaisyaManを返す 67 kisotaisyaMan 68 } 69 R.id.woman -> if (checked){ 70 //womanButtonが押された時の処理 -> kisotaisyawomanを返す 71 kisotaisyaWoman 72 } 73 } 74 } 75 } 76}
【エラー箇所】
①//基礎代謝計算後の値も移遷先へ移す
intent.putExtra("KISOTAISYA", RadioClicked())
RadioClickd()のカッコ部分にエラーが出ております。
②pref.edit{
putInt("WEIGHT", weighttext)
putInt("AGE", agetext)
putInt("HIGHT", highttext)
の()内右側(weighttext部分)にエラーが出ております。
③val kisotaisyaMan = 13.397 * weighttext + 4.799 * highttext - 5.677 * agetext + 88.362
val kisotaisyaWoman = 9.247 * weighttext + 3.098 * highttext - 4.33 * agetext + 447.593
の*の部分全てにエラーが出ております。
【質問】
①そもそもputExtraの理解が、intentにて設定した移遷先へ情報を格納して送るというイメージですがあっておりますでしょうか?
またここ①の処理ではRadioClickd()メソッドで戻り値とした、kisotaisyaManまたはkisotaisyaWomanを移遷先へ送りたいと考えております。
②viewに入力された値をeditメソッドにて共有プリファレンスに保存したいのですがあっていますでしょうか?
③13.397 * weighttext + 4.799 * highttext - 5.677 * agetext + 88.362
*の部分全てにエラーの赤い波線が出ており、Double型とInt型の違いが理由かな?など曖昧にしか推測出来ておりません。
④今回の構成画面ではユーザーの(身長)(体重)(年齢)(性別ラジオボタン)を入力して貰い、その結果を計算して基礎代謝を表示させたいです。
その後に、
男ならval kisotaisyaMan = 13.397 * weighttext + 4.799 * highttext - 5.677 * agetext + 88.362
女ならval kisotaisyaWoman = 9.247 * weighttext + 3.098 * highttext - 4.33 * agetext + 447.593
というので条件分岐をしてどちらかの基礎代謝を戻り値にして次の画面で使用するために移遷さたいです。
また、身長,体重,年齢,性別も次回から入力しないために共有プリファレンスに保存したと考えております。
以上を作成したい場合、どのような手順で行えばいいかお教え頂けますでしょうか?
(例)
ユーザー入力情報を画面へ移す処理
↓
共有プリファレンスへユーザー情報を格納
editを使い〜などの詳細説明
↓
基礎代謝計算メソッドの作成
などのような例をいただけたら嬉しいです、、、。
(私が書いた例は雑ですみません)
初心者のため質問に粗相がありましたら大変申し訳ございません、、。
よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー