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

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

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

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

Q&A

解決済

1回答

4387閲覧

SQLiteDatabaseを複数のActivityで共有

olee46

総合スコア32

Android Studio

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

0グッド

0クリップ

投稿2017/06/07 08:53

やりたいこと:

  • 入力画面でテーブルにデータを追加
  • 表示画面でテーブルの中身を表示

困っていること:

  • 表示画面でテーブルが表示されない

MainActivity.java

java

1package com.example.orisa.mytask2; 2 3import android.content.ContentValues; 4import android.content.Intent; 5import android.database.Cursor; 6import android.database.sqlite.SQLiteDatabase; 7import android.support.v7.app.AppCompatActivity; 8import android.os.Bundle; 9import android.view.View; 10import android.widget.Button; 11import android.widget.Toast; 12 13public class MainActivity extends AppCompatActivity { 14 15 //部品の変数 16 Button addBtn, showBtn; 17 18 @Override 19 protected void onCreate(Bundle savedInstanceState) { 20 super.onCreate(savedInstanceState); 21 setContentView(R.layout.activity_main); 22 23 //部品の取得 24 addBtn = (Button) findViewById(R.id.addBtn); 25 showBtn = (Button) findViewById(R.id.showBtn); 26 27 //addBtnのクリック処理 28 addBtn.setOnClickListener(new View.OnClickListener() { 29 @Override 30 public void onClick(View v) { 31 //Intentの生成 32 Intent intent = new Intent(getApplication(), AddActivity.class); 33 startActivity(intent); 34 } 35 }); 36 37 //showBtnのクリック処理 38 showBtn.setOnClickListener(new View.OnClickListener() { 39 @Override 40 public void onClick(View v) { 41 //Intentの生成 42 Intent intent = new Intent(getApplication(), ShowActivity.class); 43 startActivity(intent); 44 } 45 }); 46 } 47}

AddActivity.java

java

1package com.example.orisa.mytask2; 2 3import android.app.DatePickerDialog; 4import android.content.ContentValues; 5import android.content.Intent; 6import android.database.sqlite.SQLiteDatabase; 7import android.icu.util.Calendar; 8import android.os.Bundle; 9import android.support.annotation.Nullable; 10import android.support.v7.app.AppCompatActivity; 11import android.view.View; 12import android.widget.AdapterView; 13import android.widget.ArrayAdapter; 14import android.widget.Button; 15import android.widget.DatePicker; 16import android.widget.EditText; 17import android.widget.Spinner; 18import android.widget.Toast; 19 20import java.util.Date; 21 22/** 23 * Created by orisa on 2017/06/07. 24 */ 25 26public class AddActivity extends AppCompatActivity { 27 28 //部品の変数 29 EditText addTask, addDate; 30 Spinner spinner; 31 Button okBtn, cancelBtn; 32 33 //Spinner用の変数 34 String[] items = {"AM", "PM"}; 35 36 //Intent変数 37 Intent intent = new Intent(); 38 39 //データを入れる用の変数 40 String task, date, time; 41 42 @Override 43 protected void onCreate(@Nullable Bundle savedInstanceState) { 44 super.onCreate(savedInstanceState); 45 setContentView(R.layout.add_activity); 46 47 //部品の取得 48 addTask = (EditText)findViewById(R.id.addTask); 49 addDate = (EditText)findViewById(R.id.addDate); 50 spinner = (Spinner)findViewById(R.id.spinner); 51 okBtn = (Button)findViewById(R.id.okBtn); 52 cancelBtn = (Button)findViewById(R.id.cancelBtn); 53 54 //create database 55 MyDBHelper helper = new MyDBHelper(this); 56 final SQLiteDatabase db = helper.getWritableDatabase(); 57 58 //日付の取得 59 addDate.setOnClickListener(new View.OnClickListener() { 60 @Override 61 public void onClick(View v) { 62 //Calendarインスタンスを取得 63 Calendar cal = Calendar.getInstance(); 64 //DatePickerDialogインスタンスを取得 65 DatePickerDialog dpd = new DatePickerDialog(AddActivity.this, 66 new DatePickerDialog.OnDateSetListener() { 67 @Override 68 public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) { 69 //setされた日付を表示 70 addDate.setText(String.format("%d/%02d/%02d", year, month+1, dayOfMonth)); 71 } 72 }, 73 cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH) 74 ); 75 //dialogの表示 76 dpd.show(); 77 } 78 }); 79 80 //Spinnerの設定 81 ArrayAdapter<String> adapter = new ArrayAdapter<String>(AddActivity.this, 82 android.R.layout.simple_spinner_dropdown_item, items); 83 adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 84 spinner.setAdapter(adapter); 85 86 //Spinnerにリスナーをset 87 spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 88 @Override 89 public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 90 String item = (String)parent.getSelectedItem(); 91 //データを取得 92 time = item; 93 } 94 95 @Override 96 public void onNothingSelected(AdapterView<?> parent) { 97 } 98 }); 99 100 //okBtnのクリック処理 101 okBtn.setOnClickListener(new View.OnClickListener() { 102 @Override 103 public void onClick(View v) { 104 //データを取得 105 task = addTask.getText().toString(); 106 date = addDate.getText().toString(); 107 //insert into table 108 ContentValues val = new ContentValues(); 109 val.put("task_col", task); 110 val.put("date_col", date); 111 val.put("time_col", time); 112 db.insert("task_tb", null, val); 113 //Toast表示 114 Toast.makeText(AddActivity.this, "added task: "+task+" "+date+" "+time, Toast.LENGTH_SHORT) 115 .show(); 116 //activityの終了 117 finish(); 118 } 119 }); 120 121 //cancelBtnのクリック処理 122 cancelBtn.setOnClickListener(new View.OnClickListener() { 123 @Override 124 public void onClick(View v) { 125 //activityの終了 126 finish(); 127 } 128 }); 129 } 130}

ShowActivity.java

java

1package com.example.orisa.mytask2; 2 3import android.content.ContentValues; 4import android.content.Intent; 5import android.database.Cursor; 6import android.database.sqlite.SQLiteDatabase; 7import android.os.Bundle; 8import android.support.annotation.Nullable; 9import android.support.v7.app.AppCompatActivity; 10import android.view.View; 11import android.widget.Button; 12import android.widget.TextView; 13 14/** 15 * Created by orisa on 2017/06/07. 16 */ 17 18public class ShowActivity extends AppCompatActivity { 19 //部品の変数 20 Button backBtn; 21 TextView showTB; 22 23 //Intent変数 24 Intent intent; 25 26 //データを入れる用の変数 27 String task, date, time; 28 29 @Override 30 protected void onCreate(@Nullable Bundle savedInstanceState) { 31 super.onCreate(savedInstanceState); 32 setContentView(R.layout.show_activity); 33 34 //部品の取得 35 showTB = (TextView)findViewById(R.id.showTB); 36 backBtn = (Button) findViewById(R.id.backBtn); 37 38 //データベースの作成 39 MyDBHelper helper = new MyDBHelper(this); 40 SQLiteDatabase db = helper.getReadableDatabase(); 41 42 //データベースの読み出し 43 Cursor c = db.query("default_tb", new String[]{"task_col", "date_col", "time_col"}, 44 null, null, null, null, null); 45 boolean isEoF = c.moveToFirst(); 46 while(isEoF){ 47 task = c.getString(0); 48 date = c.getString(1); 49 time = c.getString(2); 50 showTB.append(task+" "+date+" "+time+"\n"); 51 isEoF = c.moveToNext(); 52 } 53 c.close(); 54 55 //backBtnのクリック処理 56 backBtn.setOnClickListener(new View.OnClickListener() { 57 @Override 58 public void onClick(View v) { 59 //activityの終了 60 finish(); 61 } 62 }); 63 64 } 65}

MyDBHelper.java

java

1package com.example.orisa.mytask2; 2 3import android.content.Context; 4import android.database.sqlite.SQLiteDatabase; 5import android.database.sqlite.SQLiteOpenHelper; 6 7/** 8 * Created by orisa on 2017/06/07. 9 */ 10 11public class MyDBHelper extends SQLiteOpenHelper { 12 13 public MyDBHelper(Context context){ 14 super(context, "task_db", null, 1); 15 } 16 @Override 17 public void onCreate(SQLiteDatabase db) { 18 //create table 19 db.execSQL("CREATE TABLE default_tb(task_col TEXT, date_col TEXT, time_col TEXT);"); 20 } 21 22 @Override 23 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 24 } 25}

このコードでデータベースが表示されないのはなぜでしょうか?
作り方は(http://www.sakc.jp/blog/archives/21645)を参考にしているのですが、どこかおかしいようです。

よろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

task_tbに挿入していますが、クリエイト文で作成しているテーブルはdefault_tbですね。

投稿2017/06/07 09:21

yona

総合スコア18155

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

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

olee46

2017/06/07 10:57

直りました!しょうもないミスでした… ありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問