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

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

詳細はこちら
Java

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

Android

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

Kotlin

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

Q&A

解決済

1回答

878閲覧

Kotlin で ボタンに応じた数値を合計して メイン画面に表示する方法

jessy_iida

総合スコア5

Java

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

Android

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

Kotlin

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

0グッド

0クリップ

投稿2021/03/14 05:07

編集2021/03/14 09:15

引用テキスト###やりたいこと

Kotlin で ボタンに応じた数値を合計して メイン画面に表示したいです

###今困っていること
①合計値がでないこと
②メインのコードの「val task = read(id!!)」の部分がLogcatで引っかかっていること

###やったこと

①ユーザーが選択したラジオボタンに応じて +=5 など数値を設定した
②idでメインまで持っていき表示しようとした

コード

追加画面のコード↓

kotlin

1 2省略 3 4class AddActivity : AppCompatActivity() { 5 6 val realm: Realm = Realm.getDefaultInstance() 7 8 var level: Int = 0 9 var levelname:String = "" 10 11 override fun onCreate(savedInstanceState: Bundle?) { 12 super.onCreate(savedInstanceState) 13 setContentView(R.layout.activity_add) 14 15 //追加ボタンを押した時に入力されたテキストを取得しsave()メソッドに値を渡す 16 addButton.setOnClickListener { 17 val title: String = titleEditText.text.toString() 18 val descriptor: String = descriptionEditText.text.toString() 19 save(title,level,levelname,descriptor) 20 } 21 22 23 radioButton01.setOnClickListener{ 24 val checked = radioButton01.isChecked 25 26 if (checked) { 27 // 1つ目のRadioButtonが選択された時の処理 28 radioButton01.isChecked = true 29 //他の3つをOff(=false)にする 30 radioButton02.isChecked = false 31 radioButton03.isChecked = false 32 radioButton04.isChecked = false 33 //01で5加算する 34 level += 5 35 //levelnameに簡単/たのしいを入れる 36 levelname = "簡単/たのしい" 37 38 } 39 } 40 41 radioButton02.setOnClickListener{ 42 val checked = radioButton02.isChecked 43 44 if (checked) { 45 // 1つ目のRadioButtonが選択された時の処理 46 radioButton02.isChecked = true 47 //他の3つをOff(=false)にする 48 radioButton01.isChecked = false 49 radioButton03.isChecked = false 50 radioButton04.isChecked = false 51 //02で10加算する 52 level += 10 53 //levelnameに普通を入れる 54 levelname = "普通" 55 } 56 } 57 58 radioButton03.setOnClickListener{ 59 val checked = radioButton03.isChecked 60 if (checked) { 61 // 1つ目のRadioButtonが選択された時の処理 62 radioButton03.isChecked = true 63 //他の3つをOff(=false)にする 64 radioButton01.isChecked = false 65 radioButton02.isChecked = false 66 radioButton04.isChecked = false 67 //03で15加算する 68 level += 15 69 //levelnameに憂鬱/しんどい 70 levelname = "憂鬱/しんどい" 71 } 72 } 73 74 radioButton04.setOnClickListener{ 75 val checked = radioButton04.isChecked 76 if (checked) { 77 // 1つ目のRadioButtonが選択された時の処理 78 radioButton04.isChecked = true 79 //他の3つをOff(=false)にする 80 radioButton01.isChecked = false 81 radioButton02.isChecked = false 82 radioButton03.isChecked = false 83 //04で25加算する 84 level += 25 85 //levelnameに苦痛/やりたくない 86 levelname = "苦痛/やりたくない" 87 } 88 } 89 90省略

メイン画面のコード↓

Kotlin

1省略 2 3class MainActivity : AppCompatActivity() { 4 5 private val realm: Realm by lazy { 6 Realm.init(this) 7 Realm.getDefaultInstance() 8 } 9 10 override fun onCreate(savedInstanceState: Bundle?) { 11 super.onCreate(savedInstanceState) 12 setContentView(R.layout.activity_main) 13 14 //受け取った変数を入れる (IDはお役御免 15 val id = intent.getStringExtra("ID") 16 17 //bookの中身は25行目のid検索の結果出てきた1つのBookが入ってる 18 val task = read(id!!) 19 20 //レベルの合計 21 //取り出した情報を各入れ物に入れる 22 totalTextView.text = task?.level.toString() 23 24 25 //画面遷移Main→List 26 taskListButton.setOnClickListener{ 27 val toTaskListActivity = Intent(this,TaskListActivity::class.java) 28 startActivity(toTaskListActivity) 29 30 } 31 } 32 fun read(searchId:String): Task?{ 33 34 return realm.where(Task::class.java).equalTo("id" , searchId).findFirst() 35 36 } 37}

個人的な考え

①そもそも合計できてないのでは?
これに関しては家計簿アプリや電卓アプリをみてみたのですが、+=で合計できてるのではないかと思っています。
もし他にもいい方法があれば教えていただけると嬉しいです!

②データーの受け渡しが正しくできていないのでは?
idの受け渡しが正しくできていないためLogcatで引っかかったのではないかと考えています。
ですが、これに関してはどう確かめていいのかわからず積んでいます

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

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

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

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

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

guest

回答1

0

ベストアンサー

②データーの受け渡しが正しくできていないのでは?

おそらくこれが理由です。
MainActivityonCreateでデータを受け取ろうとしてる当たり非常に怪しいです。
問題を切り分けるためにも、Activity間での単純なデータの受け渡しから初めて少しずつ機能を追加していくことをお勧めします。

アクティビティからの結果の取得(https://developer.android.com/training/basics/intents/result?hl=ja)
こういうことがやりたいんじゃないかと思うので、参考にしてください。

あとログはもっと読んだほうがいいですし、出したほうがいいです。levelがちゃんと増えてるかとか、idがちゃんと受け渡しできてるかといったことはログを出せば一発で分かります。ちゃんと読めばすでにログには参考になるものが出力されてるかもしれません。

投稿2021/03/14 17:33

yudedako67

総合スコア2047

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問