質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
Java

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

Android

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

Android Studio

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

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

Q&A

1回答

781閲覧

Android Studio コードの修正

yasuun

総合スコア7

Java

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

Android

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

Android Studio

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

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

0グッド

0クリップ

投稿2021/03/29 11:21

●解決したい事
EditTextにその日に食べたカロリーを入力し、基礎代謝+活動代謝(前の画面からputExtraで受け取っている変数result)と計算しようと思っております。
エラーは出ていなく、@+id/comBtnを押して上記の計算をしたいのですが、入力をして(2000カロリーなど)comBtnを押すとエミュレーターが強制ストップしてしまい原因がわかりません。。
何度も書き換えましたがわかりません。
下記にコードを添付いたしますので、違和感のある箇所をご指摘頂けると幸いです汗
よろしくお願い致します。

kotlin

1class ResultActivity2 : AppCompatActivity() { 2 3 private lateinit var binding: ActivityResult2Binding 4 5 override fun onCreate(savedInstanceState: Bundle?) { 6 super.onCreate(savedInstanceState) 7 8 binding = ActivityResult2Binding.inflate(layoutInflater) 9 setContentView(binding.root) 10 11 binding.EV1.setText("評価") 12 binding.EV2.setText("あなたの本日カロリーは...") 13 14 //今日食べたカロリーをedit型からFloat型へ変換処理。nullならダイアログを表示。 15 var todayEat = binding.todayEat.text.toString().toFloatOrNull() 16 var result = intent.getFloatExtra("RESULT", 0f) 17 var resultKcal: Float 18 19 binding.comBtn.setOnClickListener { 20 21 if (todayEat == null) { 22 AlertDialog.Builder(this) 23 .setTitle("入力に誤りがあります。") 24 .setPositiveButton(android.R.string.ok, null).show() 25 } 26 27 //result=その日の総合消費カロリー todayEat=本日の摂取カロリー(食べたカロリー) 28 29 if (result > todayEat!!) { 30 resultKcal = result - todayEat //消費カロリーの方が多い場合 31 } else { 32 resultKcal = todayEat - result //摂取カロリーの方が多い場合 33 } 34 35 36 binding.EVtext1.setText(resultKcal.toString()) 37 38 if (resultKcal > 500) { 39 binding.comment.setText( 40 "+500Kcal以上は取りすぎです。ダイエット時の適切なカロリーは" + result.toString() + "よりも低くなければいけません。" + 41 "あなたが本日の摂取カロリーからマイナスするのは" + resultKcal.toString() + "が望ましいでしょう。" 42 ) 43 } else if (resultKcal < 0 && -300 > resultKcal) { //0~-300の間 44 binding.comment.setText( 45 "本日の-" + resultKcal.toString() + "は適性なダイエットカロリーです。" + "ダイエット時の適切なカロリーは" + result.toString() + "よりも低くなければいけません。" + 46 "今後も0 ~ -300Kcalの間を目安に継続しましょう。理想は0よりも-300に近い方がいいです" 47 ) 48 } else if (resultKcal < -300 && resultKcal > -500) { 49 binding.comment.setText( 50 "本日の-" + resultKcal.toString() + "は適性なダイエットカロリーです。" + "ダイエット時の適切なカロリーは" + result.toString() + "よりも低くなければいけません。" + 51 "ただし低くし過ぎてもいけません。理想は0 ~ -500であり、-500Kcalを下回らないように努力しましょう。" 52 ) 53 } else if (resultKcal < 500 && resultKcal > 0) { 54 binding.comment.setText( 55 "本日の+" + resultKcal.toString() + "は筋肉を発達させる上では適性なカロリーです。" + "逆に減量のダイエット時の適切なカロリーは" + result.toString() + "よりも低くなければいけません。" + 56 "体脂肪を増やさず筋肉のみを増やすならば、今後も0 ~ +500Kcalの間を目安に継続しましょう。ただ、運動をしていない方であれば、" + result.toString() + "よりも+300 ~ +500Kcalをすると体脂肪が増える可能性があります" + 57 "あくまでもダイエットは(筋トレ)が前提となります。" 58 ) 59 } else { 60 binding.comment.setText( 61 "本日の+" + resultKcal.toString() + "は体脂肪を増やす可能性が高い摂取カロリーです。" + "ダイエット時の適切なカロリーは" + result.toString() + "よりも低くなければいけません。" + 62 "今後は体重を健康的に減らしたいのであれば" + result.toString() + "から0 ~ -300Kcalの間を目安に継続しましょう。理想は0よりも300に近い方がいいです" + "逆に筋肉を増やしつつ、体脂肪を付けたくないのであれば" + result.toString() + "から+100 ~ 300Kcalを目安に摂取カロリーを" + 63 "増やしましょう" 64 ) 65 } 66 67 } 68 } 69} 70 71``` Xml 72 73 <TextView 74 android:id="@+id/EV1" 75 android:layout_width="wrap_content" 76 android:layout_height="wrap_content" 77 android:text="評価" 78 android:textSize="36sp" 79 app:layout_constraintBottom_toTopOf="@+id/todayEat" 80 app:layout_constraintEnd_toEndOf="parent" 81 app:layout_constraintStart_toStartOf="parent" 82 app:layout_constraintTop_toTopOf="parent" 83 app:layout_constraintVertical_bias="0.51" /> 84 85 <TextView 86 android:id="@+id/EV2" 87 android:layout_width="wrap_content" 88 android:layout_height="wrap_content" 89 android:layout_marginTop="23dp" 90 android:layout_marginBottom="32dp" 91 android:text="あなたの本日消費したカロリーは..." 92 android:textSize="18sp" 93 app:layout_constraintBottom_toTopOf="@+id/EVtext1" 94 app:layout_constraintEnd_toEndOf="parent" 95 app:layout_constraintStart_toStartOf="parent" 96 app:layout_constraintTop_toBottomOf="@+id/eatKcal" /> 97 98 <TextView 99 android:id="@+id/EVtext1" 100 android:layout_width="wrap_content" 101 android:layout_height="wrap_content" 102 android:text="Kcal" 103 android:textSize="24sp" 104 app:layout_constraintBottom_toTopOf="@+id/comment" 105 app:layout_constraintEnd_toEndOf="parent" 106 app:layout_constraintStart_toStartOf="parent" 107 app:layout_constraintTop_toBottomOf="@+id/EV2" /> 108 109 <EditText 110 android:id="@+id/eatKcal" 111 android:layout_width="wrap_content" 112 android:layout_height="wrap_content" 113 android:layout_marginBottom="22dp" 114 android:ems="10" 115 android:inputType="numberDecimal" 116 app:layout_constraintBottom_toTopOf="@+id/EV2" 117 app:layout_constraintEnd_toEndOf="parent" 118 app:layout_constraintStart_toStartOf="parent" 119 app:layout_constraintTop_toBottomOf="@+id/todayEat" /> 120 121 <TextView 122 android:id="@+id/todayEat" 123 android:layout_width="wrap_content" 124 android:layout_height="wrap_content" 125 android:layout_marginTop="17dp" 126 android:text="本日の摂取カロリーを入力" 127 android:textSize="18sp" 128 app:layout_constraintBottom_toTopOf="@+id/eatKcal" 129 app:layout_constraintEnd_toEndOf="parent" 130 app:layout_constraintStart_toStartOf="parent" 131 app:layout_constraintTop_toBottomOf="@+id/EV1" /> 132 133 <TextView 134 android:id="@+id/comment" 135 android:layout_width="wrap_content" 136 android:layout_height="wrap_content" 137 android:layout_marginBottom="436dp" 138 android:text="ここに評価のコメントが入ります。" 139 android:textSize="18sp" 140 app:layout_constraintBottom_toBottomOf="parent" 141 app:layout_constraintEnd_toEndOf="parent" 142 app:layout_constraintStart_toStartOf="parent" 143 app:layout_constraintTop_toBottomOf="@+id/EVtext1" /> 144 145 <Button 146 android:id="@+id/comBtn" 147 android:layout_width="wrap_content" 148 android:layout_height="wrap_content" 149 android:layout_marginTop="318dp" 150 android:layout_marginBottom="70dp" 151 android:text="結果を見る" 152 app:layout_constraintBottom_toBottomOf="parent" 153 app:layout_constraintEnd_toEndOf="parent" 154 app:layout_constraintStart_toStartOf="parent" 155 app:layout_constraintTop_toBottomOf="@+id/comment" /> 156

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

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

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

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

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

guest

回答1

0

kotlin

1//今日食べたカロリーをedit型からFloat型へ変換処理。nullならダイアログを表示。 2var todayEat = binding.todayEat.text.toString().toFloatOrNull() 3var result = intent.getFloatExtra("RESULT", 0f) 4var resultKcal: Float

この部分ですが、いまのコードですと、起動直後に1回しか実行されません。
そうではなく、ボタンが押されたときに、値を取りに行くのではないでしょうか。
即ち、これらは、setOnClickListener の中に書かないといけません。

それから、2000 と入力したら、todayEat に 2000 を入れたいのだと思いますが、
id が違います。
TextView の "本日の摂取カロリーを入力" という文字を float に変換しようとして、
失敗して null になっています。

xml をよく見てください。EditText の値をとりたいのですよね?

binding.todayEat.text.toString().toFloatOrNull()

ではなく、

binding.eatKcal.text.toString().toFloatOrNull()

です。
また、null チェックでダイアログを表示したあとで、return; がないので、
そのままダラダラと下のコードを実行してしまっています。

投稿2021/03/29 13:51

ak.n

総合スコア291

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問