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

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

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

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

解決済

SQLiteDatabaseを複数のActivityで共有

olee46
olee46

総合スコア32

Android Studio

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

1回答

0リアクション

0クリップ

3497閲覧

投稿2017/06/07 08:53

やりたいこと:

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

困っていること:

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

MainActivity.java

java

package com.example.orisa.mytask2; import android.content.ContentValues; import android.content.Intent; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.Toast; public class MainActivity extends AppCompatActivity { //部品の変数 Button addBtn, showBtn; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //部品の取得 addBtn = (Button) findViewById(R.id.addBtn); showBtn = (Button) findViewById(R.id.showBtn); //addBtnのクリック処理 addBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //Intentの生成 Intent intent = new Intent(getApplication(), AddActivity.class); startActivity(intent); } }); //showBtnのクリック処理 showBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //Intentの生成 Intent intent = new Intent(getApplication(), ShowActivity.class); startActivity(intent); } }); } }

AddActivity.java

java

package com.example.orisa.mytask2; import android.app.DatePickerDialog; import android.content.ContentValues; import android.content.Intent; import android.database.sqlite.SQLiteDatabase; import android.icu.util.Calendar; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.DatePicker; import android.widget.EditText; import android.widget.Spinner; import android.widget.Toast; import java.util.Date; /** * Created by orisa on 2017/06/07. */ public class AddActivity extends AppCompatActivity { //部品の変数 EditText addTask, addDate; Spinner spinner; Button okBtn, cancelBtn; //Spinner用の変数 String[] items = {"AM", "PM"}; //Intent変数 Intent intent = new Intent(); //データを入れる用の変数 String task, date, time; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.add_activity); //部品の取得 addTask = (EditText)findViewById(R.id.addTask); addDate = (EditText)findViewById(R.id.addDate); spinner = (Spinner)findViewById(R.id.spinner); okBtn = (Button)findViewById(R.id.okBtn); cancelBtn = (Button)findViewById(R.id.cancelBtn); //create database MyDBHelper helper = new MyDBHelper(this); final SQLiteDatabase db = helper.getWritableDatabase(); //日付の取得 addDate.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //Calendarインスタンスを取得 Calendar cal = Calendar.getInstance(); //DatePickerDialogインスタンスを取得 DatePickerDialog dpd = new DatePickerDialog(AddActivity.this, new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) { //setされた日付を表示 addDate.setText(String.format("%d/%02d/%02d", year, month+1, dayOfMonth)); } }, cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH) ); //dialogの表示 dpd.show(); } }); //Spinnerの設定 ArrayAdapter<String> adapter = new ArrayAdapter<String>(AddActivity.this, android.R.layout.simple_spinner_dropdown_item, items); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner.setAdapter(adapter); //Spinnerにリスナーをset spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { String item = (String)parent.getSelectedItem(); //データを取得 time = item; } @Override public void onNothingSelected(AdapterView<?> parent) { } }); //okBtnのクリック処理 okBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //データを取得 task = addTask.getText().toString(); date = addDate.getText().toString(); //insert into table ContentValues val = new ContentValues(); val.put("task_col", task); val.put("date_col", date); val.put("time_col", time); db.insert("task_tb", null, val); //Toast表示 Toast.makeText(AddActivity.this, "added task: "+task+" "+date+" "+time, Toast.LENGTH_SHORT) .show(); //activityの終了 finish(); } }); //cancelBtnのクリック処理 cancelBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //activityの終了 finish(); } }); } }

ShowActivity.java

java

package com.example.orisa.mytask2; import android.content.ContentValues; import android.content.Intent; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Button; import android.widget.TextView; /** * Created by orisa on 2017/06/07. */ public class ShowActivity extends AppCompatActivity { //部品の変数 Button backBtn; TextView showTB; //Intent変数 Intent intent; //データを入れる用の変数 String task, date, time; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.show_activity); //部品の取得 showTB = (TextView)findViewById(R.id.showTB); backBtn = (Button) findViewById(R.id.backBtn); //データベースの作成 MyDBHelper helper = new MyDBHelper(this); SQLiteDatabase db = helper.getReadableDatabase(); //データベースの読み出し Cursor c = db.query("default_tb", new String[]{"task_col", "date_col", "time_col"}, null, null, null, null, null); boolean isEoF = c.moveToFirst(); while(isEoF){ task = c.getString(0); date = c.getString(1); time = c.getString(2); showTB.append(task+" "+date+" "+time+"\n"); isEoF = c.moveToNext(); } c.close(); //backBtnのクリック処理 backBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //activityの終了 finish(); } }); } }

MyDBHelper.java

java

package com.example.orisa.mytask2; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; /** * Created by orisa on 2017/06/07. */ public class MyDBHelper extends SQLiteOpenHelper { public MyDBHelper(Context context){ super(context, "task_db", null, 1); } @Override public void onCreate(SQLiteDatabase db) { //create table db.execSQL("CREATE TABLE default_tb(task_col TEXT, date_col TEXT, time_col TEXT);"); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { } }

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

よろしくお願いします。

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

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

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

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

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

ただいまの回答率
86.12%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Android Studio

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