🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

解決済

1回答

1712閲覧

Android Studio Preference.edit内のエラー,その他エラー

yasuun

総合スコア7

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

0クリップ

投稿2021/02/09 00:09

いつもお世話になります。
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を使い〜などの詳細説明

基礎代謝計算メソッドの作成

などのような例をいただけたら嬉しいです、、、。
(私が書いた例は雑ですみません)
初心者のため質問に粗相がありましたら大変申し訳ございません、、。

よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dodox86

2021/02/09 00:59

上記コメントで指摘いただいたことも踏まえ、ひとつひとつ片付けましょう。基本的にはひとつの質問につきひとつの問いですし、こういう質問の場合、回答後の質疑応答が長引くことが多く、回答が避けられがちになります。また、初心であればあれもこれも最初から盛り込むとどれも終わらず、理解もできません。
guest

回答1

0

ベストアンサー

①//基礎代謝計算後の値も移遷先へ移す
intent.putExtra("KISOTAISYA", RadioClicked())
RadioClickd()のカッコ部分にエラーが出ております。

①そもそもputExtraの理解が、intentにて設定した移遷先へ情報を格納して送るというイメージですがあっておりますでしょうか?

遷移先へ情報を格納して送るというイメージはあってますが、RadioClicked は view という引数を取るメソッドなのに、引数がないのでエラーになってます。さらに言うと、RadioClicked はボタンを押した時に「処理を行う」メソッドだと思いますが、「処理を行う」メソッドと「値を取得・計算する」メソッドは分けたほうが無難です。

また、Java や Kotlin ではメソッド名の先頭の文字は小文字にして radioClicked にしましょう。先頭が大文字だとクラス名を表す慣習になっているので、特に Kotlin では RadioClicked() という字面を見ると RadioClicked オブジェクトを生成すると言う意味になってることが多いです。

②pref.edit{
putInt("WEIGHT", weighttext)
putInt("AGE", agetext)
putInt("HIGHT", highttext)
の()内右側(weighttext部分)にエラーが出ております。

②viewに入力された値をeditメソッドにて共有プリファレンスに保存したいのですがあっていますでしょうか?

やりたいことは分かりますが、weighttext, agetext, highttext はいずれも TextView または EditText オブジェクトだと思われます。putInt の引数にすると言うことは、入力内容を Int 型に変換する必要があるのでは。

また、weighttext, agetext, highttext はフィールドで、かつ binding から初期化してますが、インスタンス生成ににはまだ binding が存在しませんので、実行できたとしても実行時エラーになるはずです。

③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
の*の部分全てにエラーが出ております。

③13.397 * weighttext + 4.799 * highttext - 5.677 * agetext + 88.362

*の部分全てにエラーの赤い波線が出ており、Double型とInt型の違いが理由かな?など曖昧にしか推測出来ておりません。

これも型エラーですね。上記の通り weighttext, agetext, highttext はどれも Int 型ではありません。

④(略)
以上を作成したい場合、どのような手順で行えばいいかお教え頂けますでしょうか?

エラーが直れば、だいたいできてる気がしますけど…。(次の画面がどうなってるかは分からないので、それは別として。) 期待通りに動かなかったら、またその時に質問してください。

投稿2021/02/09 01:44

hoshi-takanori

総合スコア7899

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yasuun

2021/02/11 08:52

詳しいご説明ありがとうございます! まだまだ駆け出しでございますため、頂きましたアドバイスを元に整理して1から作り直そうと思います。 またご回答いただけると嬉しいです!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問