前提・実現したいこと
kotlinで単語帳のアプリを作成しています。
発生している問題・エラーメッセージ
EditTextにタイトルを記入して
ボタンを押すとSQLiteで保存して別の画面に移行し、
もし何も書かれてければダイアログで警告を出すプログラムを作成したいのですが、記入した状態でもダイアログが出て移行できません。
該当のソースコード
kotlin
1import android.os.Bundle 2import android.view.MenuItem 3import android.view.View 4import android.widget.Button 5import android.widget.EditText 6import androidx.appcompat.app.AlertDialog 7import androidx.room.Room 8import androidx.room.migration.Migration 9import androidx.sqlite.db.SupportSQLiteDatabase 10import com.example.alpha_1.R 11import com.example.alpha_1.Rooms.AppDatabase 12import com.example.alpha_1.Rooms.Wordbooks 13import kotlin.concurrent.thread 14 15class WordbookRegist : AppCompatActivity() { 16 private val database: AppDatabase by lazy { 17 Room.databaseBuilder(applicationContext, AppDatabase::class.java, "Wordbook-titles") 18 .addMigrations(object : Migration(1, 2) { 19 override fun migrate(database: SupportSQLiteDatabase) { 20 21 } 22 }) 23 .build() 24 } 25 26 override fun onCreate(savedInstanceState: Bundle?) { 27 super.onCreate(savedInstanceState) 28 setContentView(R.layout.activity_wordbook_regist) 29 30 //Toolbar 31 setSupportActionBar(findViewById(R.id.toolbar)) 32 supportActionBar?.setDisplayHomeAsUpEnabled(true) 33 34 val titleEdit = findViewById<EditText>(R.id.titleEdit) 35 val titlelength = titleEdit.text.toString() 36 val saveButton: Button = findViewById(R.id.saveButton) 37 38 //buttonを押したとき 39 //エラー箇所 40 saveButton.setOnClickListener { 41 if (titlelength.isNullOrBlank()) { 42 AlertDialog.Builder(this) 43 .setMessage("タイトルを入力してください") 44 .setPositiveButton("了解") { _, _ -> } 45 .show() 46 47 } else { 48 thread { 49 insertTitle() 50 //画面遷移 51 val intent = Intent(this, WordbookEditActivity::class.java) 52 startActivity(intent) 53 } 54 } 55 } 56 } 57//戻るボタン 実装中 58 override fun onOptionsItemSelected(item: MenuItem): Boolean { 59 if (item.itemId == android.R.id.home) finish() 60 return when (item.itemId) { 61 R.id.action_settings -> true 62 63 else -> super.onOptionsItemSelected(item) 64 } 65 } 66//SQLiteでinsert する 67 private fun insertTitle() { 68 val titleEdit = findViewById<EditText>(R.id.titleEdit) 69 val WordbookDao = database.WordbookDao() 70 val newWordbook = Wordbooks(0, titleEdit.text.toString()) 71 72 WordbookDao.insert(newWordbook) 73 } 74}
補足情報(FW/ツールのバージョンなど)
kotlinのバージョン:1.4.30
gradleのバージョン:4.1.3
Roomのバージョン:2.2.6
val titlelength = titleEdit.text.toString() を saveButton.setOnClickListener の中に入れれば良いのでは。
(onCreate に書いたコードは WordbookRegist 画面を開いたときに一回だけ実行されますが、setOnClickListener に書いたコードはボタンを押すたびに実行されます。)
回答1件
あなたの回答
tips
プレビュー