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

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

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

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

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

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

Q&A

解決済

1回答

4011閲覧

データベースで取り込んだデータをFragment上に表示したい

Haru_T

総合スコア34

SQLite

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

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

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

0グッド

0クリップ

投稿2016/09/22 05:26

編集2016/09/22 05:32

単語帳アプリを作っています。
ActivityにFragmentを一つ作り、そこにデータベースより取り込んだデータを表示したいのです。
PupSQLiteを使って作ったSQLiteファイル(assetsフォルダに保存)から読み取ります。
項目が7つあり、それをFragmentに縦に並べたTextViewに表示させたいのです。
特にエラーはありません。ただ処理が間違っているのだと思います。
おかしい点等あればご指摘頂きたいです。

java

1package com.example.fragmenttest; 2 3import android.database.Cursor; 4import android.database.SQLException; 5import android.database.sqlite.SQLiteDatabase; 6import android.support.v4.app.FragmentActivity; 7import android.support.v4.app.FragmentManager; 8import android.support.v4.util.SparseArrayCompat; 9import android.support.v4.view.ViewPager; 10import android.os.Bundle; 11import android.view.View; 12 13import java.io.IOException; 14 15public class MainActivity extends FragmentActivity { 16 private DataBaseHelper mDBHelper; 17 private SQLiteDatabase db; 18 private ViewPager mViewPager; 19 private ArrayList<SparseArrayCompat<String>> wList; 20 private static final String DB_TABLE = "WordData"; 21 22 @Override 23 protected void onCreate(Bundle savedInstanceState) { 24 super.onCreate(savedInstanceState); 25 setContentView(R.layout.activity_main); /* レイアウトを作る */ 26 mViewPager = (ViewPager) findViewById(R.id.view_pager); 27 FragmentManager fm = getSupportFragmentManager(); /* PagerAdapterを作る */ 28 PagerAdapter adapter = new PagerAdapter(fm); 29 setDatabase(); 30 31 adapter.addAll(wList); 32 mViewPager.setAdapter(adapter); /* ViewPagerのセット */ 33 34 } 35 36 public void setDatabase() { 37 mDBHelper = new DataBaseHelper(this); 38 SQLiteDatabase database = mDBHelper.getWritableDatabase(); 39 try { 40 Cursor c = db.query(DB_TABLE, new String[] 41 {"word", "pron", "pronk", "mean1", "mean2", "mean3", "part"}, null, null, null, null, null); 42 mDBHelper.createEmptyDataBase(); 43 db = mDBHelper.openDataBase(); 44 c.close(); 45 } catch (IOException ioe) { 46 throw new Error("Unable to create database"); 47 } catch (SQLException sqle) { 48 throw sqle; 49 } finally { 50 database.close(); 51 } 52 } 53}

java

1package com.example.fragmenttest; 2 3import android.content.Context; 4import android.database.SQLException; 5import android.database.sqlite.SQLiteDatabase; 6import android.database.sqlite.SQLiteException; 7import android.database.sqlite.SQLiteOpenHelper; 8 9import java.io.File; 10import java.io.FileOutputStream; 11import java.io.IOException; 12import java.io.InputStream; 13import java.io.OutputStream; 14 15public class DataBaseHelper extends SQLiteOpenHelper { 16 private static final String DB_NAME = "WordData."; 17 private static final String DB_NAME_ASSET = "WordData.db"; 18 private static final int DB_VERSION = 1; 19 20 private SQLiteDatabase mDatabase; 21 private final Context mContext; 22 private final File mDatabasePath; 23 private boolean createDatabase = false; 24 25 public DataBaseHelper (Context context) { 26 super(context, DB_NAME, null, DB_VERSION); 27 mContext = context; 28 mDatabasePath = mContext.getDatabasePath(DB_NAME); 29 } 30 31 /* 空のデータベース作成 */ 32 public void createEmptyDataBase() throws IOException { 33 boolean dbExist = checkDatabaseExists(); 34 if(dbExist) { /* すでにデータベースが作られている */ 35 } else { 36 getReadableDatabase(); 37 try { 38 copyDataBaseFromAsset(); /* データベースをコピー */ 39 String dbPath = mDatabasePath.getAbsolutePath(); 40 SQLiteDatabase checkDb = null; 41 try { 42 checkDb = SQLiteDatabase.openDatabase(dbPath, null, SQLiteDatabase.OPEN_READWRITE); 43 } catch(SQLiteException e) { 44 } 45 if(checkDb != null) { 46 checkDb.setVersion(DB_VERSION); 47 checkDb.close(); 48 } 49 } catch(IOException e) { 50 throw new Error("Error copying database"); 51 } 52 } 53 } 54 55 /* すでにデータベースがあるか確認 */ 56 private boolean checkDatabaseExists() { 57 String dbPath = mDatabasePath.getAbsolutePath(); 58 SQLiteDatabase checkDb = null; 59 try { 60 checkDb = SQLiteDatabase.openDatabase(dbPath, null, SQLiteDatabase.OPEN_READWRITE); 61 } catch(SQLiteException e) { 62 } 63 if(checkDb == null) { 64 return false; /* まだ存在していない */ 65 } 66 67 int oldVersion = checkDb.getVersion(); 68 int newVersion = DB_VERSION; 69 70 if(oldVersion == newVersion) { 71 checkDb.close(); /* データベースは存在していて最新 */ 72 return true; 73 } 74 75 File f = new File(dbPath); /* 最新ではないので削除 */ 76 f.delete(); 77 return false; 78 } 79 80 /* 格納したデータベースを空のデータベースにコピー */ 81 private void copyDataBaseFromAsset() throws IOException { 82 InputStream mInput = mContext.getAssets().open(DB_NAME_ASSET); /* asset内のファイルにアクセス */ 83 OutputStream mOutput = new FileOutputStream(mDatabasePath); /* 作成した空のデータベース */ 84 byte[] buffer = new byte[1024]; 85 int size; 86 while((size = mInput.read(buffer)) > 0) { 87 mOutput.write(buffer, 0, size); 88 } 89 90 mOutput.flush(); /* close the stream */ 91 mOutput.close(); 92 mInput.close(); 93 } 94 95 public SQLiteDatabase openDataBase() throws SQLException { 96 return getReadableDatabase(); 97 } 98 99 public void onCreate(SQLiteDatabase db) { 100 } 101 102 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 103 } 104 105 public synchronized void close() { 106 if(mDatabase != null) 107 mDatabase.close(); 108 109 super.close(); 110 } 111}

java

1package com.example.fragmenttest; 2 3import android.graphics.Color; 4import android.os.Bundle; 5import android.support.v4.app.Fragment; 6import android.view.LayoutInflater; 7import android.view.View; 8import android.view.ViewGroup; 9import android.widget.TextView; 10 11import org.w3c.dom.Text; 12 13 14/* 単語情報を表示する Fragment */ 15public class testFragment extends Fragment{ 16 17 @Override 18 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){ 19 20 Bundle bundle= getArguments(); /* データ取得 */ 21 int page = bundle.getInt("word"); 22 String word = bundle.getString("word"); 23 String pron = bundle.getString("pron"); 24 String pronk = bundle.getString("pronk"); 25 String mean1 = bundle.getString("mean1"); 26 String mean2 = bundle.getString("mean2"); 27 String mean3 = bundle.getString("mean3"); 28 String part=bundle.getString("part"); 29 30 // View をつくる 31 View layout = inflater.inflate(R.layout.fragment_test, container, false); 32 33 TextView wordView =(TextView) layout.findViewById(R.id.word_view); 34 wordView.setText(word); 35 36 TextView pronView =(TextView) layout.findViewById(R.id.pron_view); 37 pronView.setText(pron); 38 39 TextView pronkView =(TextView) layout.findViewById(R.id.pronk_view); 40 pronkView.setText(pron); 41 42 TextView mean1View =(TextView) layout.findViewById(R.id.mean1_view); 43 mean1View.setText(mean1); 44 45 TextView mean2View =(TextView) layout.findViewById(R.id.mean2_view); 46 mean2View.setText(mean2); 47 48 TextView meaningView =(TextView) layout.findViewById(R.id.mean3_view); 49 meaningView.setText(mean3); 50 51 TextView partView =(TextView) layout.findViewById(R.id.part_view); 52 partView.setText(part); 53 54 TextView pageView =(TextView) layout.findViewById(R.id.page_view); 55 pageView.setText(String.valueOf(page)); 56 57 return layout; 58 } 59}

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

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

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

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

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

guest

回答1

0

ベストアンサー

DBからデータを取り出している部分がありません。

また、エラーが発生していないが想定と異なった挙動をしている場合は、怪しい値や処理順等をLog出力して想定と異なる部分を探す癖をつけましょう。

投稿2016/09/22 06:22

yona

総合スコア18155

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

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

Haru_T

2016/09/22 07:55

ご指摘ありがとうございます。肝心の部分の記述が抜けていました。 調べて、SQL文を指定してデータを獲得してみようと思います。 Logの件については毎度していないのでこれからはしようと思います。
yona

2016/09/22 16:39

SQLiteDatabaseのインスタンスがフィールド変数dbとローカル変数databaseの2つがあります。 この辺りに誤りがありそうですね。
Haru_T

2016/09/23 08:10

見落としていました!ご指摘ありがとうございます。 今一度コードの見直し等してみようと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問