前提・実現したいこと
現在android_studioで英単語帳アプリを作成しています。
英単語とその日本語訳をedit_textに入力したものをsqliteを使って保存し取り出したいです。
発生している問題・エラーメッセージ
edit_textから文字を取得してContent_valueに入れたものをdatabaseに追加していますが、
そのデータを取り出すときには値が変わっていてこのようなオブジェクト自体の情報? (例) android.support.v7.widget.AppCompatEditText{5c04aac VFED..CL. .F...... 0,496-
1032,992 #7f07004d app:id/japaneseword} のようなものになっています。
該当のソースコード
java
1package com.example.englishwordnote; 2 3import android.content.Intent; 4import android.database.sqlite.SQLiteDatabase; 5import android.database.sqlite.SQLiteOpenHelper; 6import android.support.v7.app.AppCompatActivity; 7import android.os.Bundle; 8import android.text.SpannableStringBuilder; 9import android.util.Log; 10import android.view.View; 11import android.widget.EditText; 12import android.widget.TextView; 13 14public class input_new_word extends AppCompatActivity { 15 SQLiteDatabase db; 16 sqlite_db sqlitehelper; 17 @Override 18 protected void onCreate(Bundle savedInstanceState) { 19 super.onCreate(savedInstanceState); 20 setContentView(R.layout.activity_input_new_word); 21 sqlitehelper =new sqlite_db((getApplicationContext())); 22 db= sqlitehelper.getWritableDatabase(); 23 24 findViewById(R.id.enterbutton).setOnClickListener(new View.OnClickListener() { 25 @Override 26 public void onClick(View v) { 27 28 EditText englishword=findViewById(R.id.englishword); 29 SpannableStringBuilder sb1 =(SpannableStringBuilder)englishword.getText(); 30 String str1 =sb1.toString(); 31 EditText japanseword=findViewById(R.id.japaneseword); 32 SpannableStringBuilder sb2 =(SpannableStringBuilder)japanseword.getText(); 33 String str2 =japanseword.getText().toString(); 34 35 36 sqlitehelper.saveDate(str1,str2);//データベースへの入力 37 String s =sqlitehelper.showdata(db); //;データベースからの返答 38 39 Log.v("show","取得した値は"+s+"です"); 40 41 } 42 } ); 43 } 44} 45 46package com.example.englishwordnote; 47 48import android.database.Cursor; 49import android.database.sqlite.SQLiteDatabase; 50import android.database.sqlite.SQLiteOpenHelper; 51import android.content.ContentValues; 52import android.content.Context; 53import android.util.Log; 54 55 56public class sqlite_db extends SQLiteOpenHelper { 57 private static final int DATABASE_VERSION =4; 58 59 private static final String DATABASE_NAME="TestDB.db"; 60 private static final String TABLE_NAME="testtable"; 61 62 private static final String SQL_CREATE_ENTRIES="CREATE TABLE "+TABLE_NAME + "("+"english String"+","+"japanese String"+")"; 63 64 sqlite_db(Context context){ 65 super(context,DATABASE_NAME,null,DATABASE_VERSION); 66 } 67 68 69 public void onCreate(SQLiteDatabase db){ 70 db.execSQL(SQL_CREATE_ENTRIES); // table作成 71 72 73 } 74 public void onUpgrade(SQLiteDatabase db,int oldVersion, int newVersion){ 75 onCreate(db); 76 } 77 78 79 public void saveDate(String english,String japanese){ //データの格納 80 SQLiteDatabase db =this.getWritableDatabase(); 81 ContentValues values =new ContentValues(); 82 83 values.put("english",english); 84 values.put("japanese",japanese); 85 86 Log.d("database", english+"と"+japanese+"を入力しました"); 87 88 db.insert(TABLE_NAME,null,values); 89 } 90 public String showdata(SQLiteDatabase db){//データベースからquery結果をcursorで受け取る 91 92 String[] columns={"english","japanese"}; 93 94 Cursor cursor =db.query(TABLE_NAME,columns,null,null,null,null, 95 null,null); 96 StringBuilder stringBuilder =new StringBuilder(); 97 cursor.moveToFirst(); //先頭の行に移動 98 for(int i=cursor.getCount()-1;i<cursor.getCount();i++){//一番最後に入力した単語を取得 99 stringBuilder.append(cursor.getString(1)); 100 cursor.moveToNext(); 101 } 102 cursor.close(); 103 String s =new String(stringBuilder); 104 return s; 105 106 } 107 108 109}
試したこと
デバッグでデータベースにinsertするときのvalueを確認しましたが、そのときは正常な値で取り出すときには意図しない値になっていました。
補足情報(FW/ツールのバージョンなど)
androidstudio version 3.4
compile sdk version api28
回答1件
あなたの回答
tips
プレビュー