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

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

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

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

ダイアログ

ユーザーにウィンドウやボックス等の形で個別で表示されるフォームであり、ユーザーに判断を促す目的で表示される。ユーザーが見逃す事のないよう、操作中のフォーム上にポップアップして表示される。

Kotlin

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

Q&A

解決済

1回答

1105閲覧

kotlinで画面推移が正しくできない

Rnir_R

総合スコア1

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

ダイアログ

ユーザーにウィンドウやボックス等の形で個別で表示されるフォームであり、ユーザーに判断を促す目的で表示される。ユーザーが見逃す事のないよう、操作中のフォーム上にポップアップして表示される。

Kotlin

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

0グッド

0クリップ

投稿2021/03/31 10:38

前提・実現したいこと

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

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

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

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

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

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

hoshi-takanori

2021/03/31 10:42

val titlelength = titleEdit.text.toString() を saveButton.setOnClickListener の中に入れれば良いのでは。 (onCreate に書いたコードは WordbookRegist 画面を開いたときに一回だけ実行されますが、setOnClickListener に書いたコードはボタンを押すたびに実行されます。)
guest

回答1

0

自己解決

kotlin

1val titlelength = titleEdit.text.toString()

ここをsetOnClickListenerの中に記入することで成功しました。
hoshi-takanoriさんありがとうございました。

投稿2021/03/31 12:00

Rnir_R

総合スコア1

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問