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

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

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

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

Android Studio

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

Kotlin

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

Q&A

解決済

1回答

1250閲覧

StringとIntを判定処理させたいです。

makoto-n

総合スコア436

Android

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

Android Studio

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

Kotlin

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

0グッド

0クリップ

投稿2019/11/06 17:39

編集2019/11/08 12:56

前提・実現したいこと

  • [名前]itmStrは空白があれば登録しないように
  • [値段]itmPrcは数字以外であれば登録しないように

発生している問題・エラーメッセージ

kotlin

1 var itmStr: String 2 if (itmNM?.isNotBlank()!!){ //空白も含まない 3 itmStr = itmNM 4 }else{ 5 showToast("名前を入力してください") 6 return@setOnClickListener 7 } //空白か未入力であればメッセージを表示 8 9 var itmInt: Int = when(itmPrc?.toString()?.toIntOrNull()){ //Int型にキャストするか、nullにする 10 is Int-> { 11 itmPrc.toString().toInt() 12 } //その結果の型をInt 13 else-> { 14 showToast("数値を入力してください") 15 edtPrc.setText("") 16 return@setOnClickListener 17 } //そうでないかnullであればメッセージを表示 18 }

今はボタンクリック後itmAddBtn.setOnClickListenerは「showToast("数値を入力してください")」が表示されます。
if (itmNM?.isNotBlank()!!){ //空白も含まないが判定されていないです。

該当のソースコード

kotlin

1class Registration__Activity : AppCompatActivity() { 2 3 override fun onCreate(savedInstanceState: Bundle?) { 4 super.onCreate(savedInstanceState) 5 setContentView(R.layout.activity_registration__) 6 val SQLite__Helper = SQLite__Helper(this) 7 8 var itmNM : String? = edtNM.toString() 9 var itmPrc: Intent? = intent.putExtra("itmInt", edtPrc.toString()) 10 11 fun Context.showToast(text: CharSequence) = 12 Toast.makeText(this, text, Toast.LENGTH_SHORT).show() 13 // Toastを簡素化 14 15 itmAddBtn.setOnClickListener { 16 17 var itmStr: String 18 if (itmNM?.isNotBlank()!!){ //空白も含まない 19 itmStr = itmNM 20 }else{ 21 showToast("名前を入力してください") 22 return@setOnClickListener 23 } //空白か未入力であればメッセージを表示 24 25 var itmInt: Int = when(itmPrc?.toString()?.toIntOrNull()){ //Int型にキャストするか、nullにする 26 is Int-> { 27 itmPrc.toString().toInt() 28 } //その結果の型をInt 29 else-> { 30 showToast("数値を入力してください") 31 edtPrc.setText("") 32 return@setOnClickListener 33 } //そうでないかnullであればメッセージを表示 34 } 35 36 var itmInstance = ItmMdl( 37 itmStr, itmInt 38 ) 39 40 var result = SQLite__Helper.insertItm(itmInstance) 41 42 if (result) { 43 Toast.makeText(this, "商品登録!", LENGTH_LONG).show() 44 edtNM.setText("") 45 edtPrc.setText("") 46 } 47 } 48 } 49}

レイアウトXML

xml

1<?xml version="1.0" encoding="utf-8"?> 2<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 xmlns:app="http://schemas.android.com/apk/res-auto" 4 xmlns:tools="http://schemas.android.com/tools" 5 android:layout_width="match_parent" 6 android:layout_height="match_parent" 7 tools:context=".Registration__Activity"> 8 9 <TextView 10 android:id="@+id/textView" 11 android:layout_width="wrap_content" 12 android:layout_height="wrap_content" 13 android:layout_marginTop="24dp" 14 android:text="商品登録" 15 android:textSize="30sp" 16 app:layout_constraintEnd_toEndOf="parent" 17 app:layout_constraintStart_toStartOf="parent" 18 app:layout_constraintTop_toTopOf="parent" /> 19 20 <EditText 21 android:id="@+id/edtNM" 22 android:layout_width="wrap_content" 23 android:layout_height="wrap_content" 24 android:layout_marginTop="100dp" 25 android:ems="10" 26 android:inputType="textPersonName" 27 app:layout_constraintEnd_toEndOf="parent" 28 app:layout_constraintStart_toStartOf="parent" 29 app:layout_constraintTop_toBottomOf="@+id/textView" /> 30 31 <TextView 32 android:id="@+id/textView2" 33 android:layout_width="wrap_content" 34 android:layout_height="wrap_content" 35 android:layout_marginBottom="16dp" 36 android:text="商品名" 37 app:layout_constraintBottom_toTopOf="@+id/edtNM" 38 app:layout_constraintStart_toStartOf="@+id/edtNM" /> 39 40 <EditText 41 android:id="@+id/edtPrc" 42 android:layout_width="wrap_content" 43 android:layout_height="wrap_content" 44 android:layout_marginTop="70dp" 45 android:ems="10" 46 android:inputType="numberDecimal" 47 app:layout_constraintEnd_toEndOf="parent" 48 app:layout_constraintStart_toStartOf="parent" 49 app:layout_constraintTop_toBottomOf="@+id/edtNM" /> 50 51 <TextView 52 android:id="@+id/textView3" 53 android:layout_width="wrap_content" 54 android:layout_height="wrap_content" 55 android:layout_marginBottom="16dp" 56 android:text="値段" 57 app:layout_constraintBottom_toTopOf="@+id/edtPrc" 58 app:layout_constraintStart_toStartOf="@+id/edtPrc" /> 59 60 <Button 61 android:id="@+id/itmAddBtn" 62 android:layout_width="wrap_content" 63 android:layout_height="wrap_content" 64 android:layout_marginBottom="50dp" 65 android:background="#FF9800" 66 android:text="商品登録" 67 app:layout_constraintBottom_toBottomOf="parent" 68 app:layout_constraintEnd_toEndOf="parent" 69 app:layout_constraintStart_toStartOf="parent" /> 70</androidx.constraintlayout.widget.ConstraintLayout>

解決後Activity.kt

// 登録 class Registration__Activity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_registration__) val SQLite__Helper = SQLite__Helper(this) fun Context.showToast(text: CharSequence) = Toast.makeText(this, text, Toast.LENGTH_SHORT).show() // Toastを簡素化 itmAddBtn.setOnClickListener { var itmNM : String? = edtNM.text.toString() var itmPrc: String? = edtPrc.text.toString() var itmStr: String if (itmNM?.isNotBlank()!!){ //空白も含まない itmStr = itmNM }else{ showToast("名前を入力してください") return@setOnClickListener } //空白か未入力であればメッセージを表示 var itmInt: Int when(itmPrc?.toIntOrNull()){ //Int型にキャストするか、nullにする is Int-> { itmInt = itmPrc.toInt() } //その結果の型をInt else-> { showToast("数値を入力してください") edtPrc.setText("") return@setOnClickListener } //そうでないかnullであればメッセージを表示 } var itmInstance = ItmMdl( itmStr, itmInt ) var result = SQLite__Helper.insertItm(itmInstance) if (result) { showToast("商品登録!") edtNM.setText("") edtPrc.setText("") } } } }

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

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

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

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

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

nakasho_dev

2019/11/07 15:06

どこまで理解していてどこが分からないかを提示できますか。また、「edtNM」が何者か分かりません。レイアウトのXMLを提示したほうが良いかもしれません。
makoto-n

2019/11/08 00:03

修正依頼ありがとうございます。 if (itmNM?.isNotBlank()!!){ //空白も含まない がなんで判定されていないのか( else{ showToast("名前を入力してください") return@setOnClickListener })がなんで実行されないのかがわかりません
guest

回答1

0

ベストアンサー

Kotlin

1var itmNM : String? = edtNM.toString()

ボタン押下ごとに対応するのであればitmAddBtn.setOnClickListenerの中にあるべきだと思います。
onCreate時に代入したら,空のままです。

ですが、そもそもtoStringではなくtextではないでしょうか。

Kotlin

1var itmNM : String? = edtNM.text

EditTextやTextViewから入力された文字列を取得するときはgetText() / kotlinではTextを使うべきです。
toString()を使うようにどこかの教材にあったのでしょうか。

投稿2019/11/08 10:19

nakasho_dev

総合スコア2655

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

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

makoto-n

2019/11/08 12:50

ありがとうございます、無事解決しました。 >> ボタン押下ごとに対応するのであればitmAddBtn.setOnClickListenerの中にあるべきだと思います。 >> onCreate時に代入したら,空のままです。 >> ですが、そもそもtoStringではなくtextではないでしょうか。 ここを理解していませんでした! いえ、JavaでいうtoStringを使用するのかな(?)と理解不足でtoStringを使用していました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問