前提・実現したいこと
- [名前]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("") } } } }
回答1件
あなたの回答
tips
プレビュー