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

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

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

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

Kotlin

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

Q&A

0回答

283閲覧

Android StudioとKotlinでアプリを作ったのですがListをタップすると落ちてしまいます

suehiro

総合スコア0

Android Studio

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

Kotlin

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

0グッド

0クリップ

投稿2022/01/16 15:18

strings.xml```
<resources>
<string name="app_name">Database3</string>
<string-array name="lv_cocktaillist">
<item>日曜日</item>
<item>月曜日</item>
<item>火曜日</item>
<item>水曜日</item>
<item>木曜日</item>
<item>金曜日</item>
<item>土曜日</item>
</string-array>
<string name="tv_lb_name">選択された</string>
<string name="tv_name">未選択</string>
<string name="tv_lb_note">感想</string>
<string name="btn_save">保存</string>
</resources>

activity_main.xml

1<?xml version="1.0" encoding="utf-8"?> 2<LinearLayout 3 xmlns:android="http://schemas.android.com/apk/res/android" 4 android:layout_height="match_parent" 5 android:layout_width="match_parent" 6 android:orientation="vertical"> 7 8 <ListView 9 android:id="@+id/lvCocktail" 10 android:layout_width="match_parent" 11 android:layout_height="0dp" 12 android:layout_marginBottom="10dp" 13 android:layout_weight="0.6" 14 android:entries="@array/lv_cocktaillist"/> 15 16 <TextView 17 android:layout_width="wrap_content" 18 android:layout_height="wrap_content" 19 android:text="@string/tv_lb_name" 20 android:textSize="20sp"/> 21 22 <TextView 23 android:id="@+id/tvCocktailName" 24 android:layout_width="wrap_content" 25 android:layout_height="wrap_content" 26 android:text="@string/tv_name" 27 android:textSize="20sp"/> 28 29 <TextView 30 android:layout_width="wrap_content" 31 android:layout_height="wrap_content" 32 android:layout_marginTop="5dp" 33 android:text="@string/tv_lb_name" 34 android:textSize="20sp"/> 35 36 <EditText 37 android:id="@+id/etNote" 38 android:layout_width="match_parent" 39 android:layout_height="0dp" 40 android:layout_weight="0.4" 41 android:gravity="top" 42 android:inputType="textMultiLine" 43 android:autofillHints="" /> 44 45 <Button 46 android:id="@+id/btnSave" 47 android:layout_width="match_parent" 48 android:layout_height="wrap_content" 49 android:enabled="false" 50 android:onClick="onSaveButtonClick" 51 android:text="@string/btn_save"/> 52 53</LinearLayout>

MainActivity

1package com.webserva.wings.android.database3 2 3import androidx.appcompat.app.AppCompatActivity 4import android.os.Bundle 5import android.view.View 6import android.widget.* 7 8class MainActivity : AppCompatActivity() { 9 10 private val _helper=DatabaseHelper(this@MainActivity) 11 12 private var _cocktailId=-1 13 private var _cocktailName="" 14 15 override fun onCreate(savedInstanceState: Bundle?) { 16 super.onCreate(savedInstanceState) 17 setContentView(R.layout.activity_main) 18 19 val lvCocktail=findViewById<ListView>(R.id.lvCocktail) 20 lvCocktail.onItemClickListener= ListItemClickListener() 21 } 22 23 override fun onDestroy() { 24 _helper.close() 25 super.onDestroy() 26 } 27 28 fun onSaveButtonClick(view: View ){ 29 val etNote=findViewById<EditText>(R.id.etNote) 30 31 val note=etNote.text.toString() 32 val db=_helper.writableDatabase 33 34 val sqlDelete="DELETE FROM cocktailmemos WHERE _id=?" 35 var stmt=db.compileStatement(sqlDelete) 36 stmt.bindLong(1,_cocktailId.toLong()) 37 stmt.executeUpdateDelete() 38 val sqlInsert="INSERT INTO cocktailmemos(_id,name,note)VALUES(?,?,?)" 39 stmt=db.compileStatement(sqlInsert) 40 stmt.bindLong(1,_cocktailId.toLong()) 41 stmt.bindString(2,_cocktailName) 42 stmt.bindString(3,note) 43 stmt.executeInsert() 44 45 etNote.setText("") 46 val tvCocktailName=findViewById<TextView>(R.id.tvCocktailName) 47 tvCocktailName.text=getString(R.string.tv_lb_name) 48 val btnSave=findViewById<Button>(R.id.btnSave) 49 btnSave.isEnabled=false 50 } 51 52 private inner class ListItemClickListener:AdapterView.OnItemClickListener{ 53 override fun onItemClick(parent:AdapterView<*>,view:View,position:Int,id:Long){ 54 _cocktailId=position 55 _cocktailName=parent.getItemAtPosition(position) as String 56 val tvCocktailName=findViewById<TextView>(R.id.tvCocktailName) 57 tvCocktailName.text=_cocktailName 58 val btnSave=findViewById<Button>(R.id.btnSave) 59 btnSave.isEnabled=true 60 61 val db=_helper.writableDatabase 62 val sql="SELECT*FROM cocktailmemos WHERE _id=${_cocktailId}" 63 val cursor=db.rawQuery(sql,null) 64 var note="" 65 while(cursor.moveToNext()){ 66 val idxNote=cursor.getColumnIndex("note") 67 note=cursor.getString(idxNote) 68 } 69 val etNote=findViewById<EditText>(R.id.etNote) 70 etNote.setText(note) 71 } 72 } 73}

DatabaseHelper

1package com.webserva.wings.android.database3 2 3import android.content.Context 4import android.database.sqlite.SQLiteDatabase 5import android.database.sqlite.SQLiteOpenHelper 6 7class DatabaseHelper(context: Context):SQLiteOpenHelper(context,DATABASE_NAME,null,DATABASE_VERSION) { 8 companion object{ 9 private const val DATABASE_NAME="cocktailmemo.db" 10 private const val DATABASE_VERSION=1 11 } 12 13 override fun onCreate (db: SQLiteDatabase){ 14 val sb= StringBuilder() 15 sb.append("CREATE TABLE cocktailmemos(") 16 sb.append("_id INTEGER PRIMARY KEY,") 17 sb.append("name TEXT,") 18 sb.append("note TEXT,") 19 sb.append(");") 20 val sql=sb.toString() 21 22 db.execSQL(sql) 23 } 24 25 override fun onUpgrade(db:SQLiteDatabase,oldVersion:Int,newVersion:Int){} 26 27}

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

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

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

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

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

suehiro

2022/01/16 15:55

デバッグ情報です I/AssistStructure: Flattened final assist data: 2716 bytes, containing 1 windows, 19 views E/SQLiteLog: (1) near ")": syntax error in "CREATE TABLE cocktailmemos(_id INTEGER PRIMARY KEY,name TEXT,note TEXT,);" D/AndroidRuntime: Shutting down VM E/AndroidRuntime: FATAL EXCEPTION: main Process: com.webserva.wings.android.database3, PID: 16581 android.database.sqlite.SQLiteException: near ")": syntax error (code 1 SQLITE_ERROR): , while compiling: CREATE TABLE cocktailmemos(_id INTEGER PRIMARY KEY,name TEXT,note TEXT,); at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method) at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:1045) at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:652) at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:590) at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:61) at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:33) at android.database.sqlite.SQLiteDatabase.executeSql(SQLiteDatabase.java:1919) at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1841) at com.webserva.wings.android.database3.DatabaseHelper.onCreate(DatabaseHelper.kt:22) at android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:411) at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:316) at com.webserva.wings.android.database3.MainActivity$ListItemClickListener.onItemClick(MainActivity.kt:61) at android.widget.AdapterView.performItemClick(AdapterView.java:330) at android.widget.AbsListView.performItemClick(AbsListView.java:1228) at android.widget.AbsListView$PerformClick.run(AbsListView.java:3220) at android.os.Handler.handleCallback(Handler.java:938) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:368) at android.app.ActivityThread.main(ActivityThread.java:7710) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:954) I/Process: Sending signal. PID: 16581 SIG: 9
hoshi-takanori

2022/01/16 18:23

DatabaseHelper の onCreate メソッドで、note TEXT の後ろ (閉じ括弧の直前) にカンマがあるために SQL エラーになってます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問