英単語帳アプリを作っています。
SubActivityにFragmentを1つ用意し、そこに用意したSQLiteファイルのデータベースから取得したデータを表示したいのです。
[やりたい処理]
・一旦データベースで取得した値をArrayListに入れる
・Fragment上で表示するために、onCreateの外にListを作る構文を書く
しかし、文法的にエラーはないものの、構文上に問題があるのか、ArrayList(WordListという名前)を作るところでエラーとなってしまいます。
[分からないこと]
・onCreate上に残しておくべきものが合っているのかどうか
・外に出さないといけないといけないものがなんなのか
・ほかに足りないものがあるのかどうか
java
1package com.example.wordcard2; 2 3import android.content.Intent; 4 5import android.database.Cursor; 6import android.database.sqlite.SQLiteDatabase; 7import android.os.Bundle; 8import android.support.v4.app.FragmentActivity; 9import android.support.v4.app.FragmentManager; 10import android.support.v4.util.SparseArrayCompat; 11import android.support.v4.view.ViewPager; 12import android.util.Log; 13import android.view.View; 14import android.widget.ArrayAdapter; 15import android.widget.ListView; 16 17import java.util.ArrayList; 18 19public class SubActivity extends FragmentActivity { 20 21 private DataBaseHelper dbhelper = null; 22 private ViewPager mViewPager; 23 private ArrayList<SparseArrayCompat<String>> wList; 24 25 26 @Override 27 protected void onCreate(Bundle savedInstanceState) { 28 super.onCreate(savedInstanceState); 29 setContentView(R.layout.activity_sub); 30 mViewPager = (ViewPager) findViewById(R.id.view_pager); 31 32 // PagerAdapter をつくる 33 FragmentManager fm = getSupportFragmentManager(); 34 PagerAdapter adapter = new PagerAdapter(fm); 35 36 wList = getWordList(); /*40行目*/ 37 adapter.addAll(wList); 38 39 // ViewPager にセットする 40 mViewPager.setAdapter(adapter); 41 42 dbhelper = new DataBaseHelper(this); 43 } 44 45 private ArrayList<SparseArrayCompat<String>> getWordList() { 46 ArrayList<SparseArrayCompat<String>> data = new ArrayList<SparseArrayCompat<String>>(); 47 48 SQLiteDatabase databaseObject = dbhelper.getReadableDatabase(); /*80行目*/ 49 50 SparseArrayCompat<String> word = new SparseArrayCompat<String>(); 51 String query = "SELECT * " + "FROM WordData"; 52 Log.d("query", "query = " + query); 53 54 Cursor cursor = databaseObject.rawQuery(query, null); 55 cursor.moveToFirst(); 56 for (int i = 0; i < cursor.getCount(); i++) { 57 word.append(0, cursor.getString(0)); 58 word.append(1, "【" + cursor.getString(1) + cursor.getString(2) + "】"); 59 word.append(2, cursor.getString(3)); 60 word.append(3, cursor.getString(4)); 61 word.append(4, cursor.getString(5)); 62 word.append(5, cursor.getString(6)); 63 cursor.moveToNext(); 64 } 65 66 cursor.close(); 67 data.add(word); 68 69 databaseObject.close(); 70 return data; 71 } 72}
エラーは下記の通りです。
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.database.sqlite.SQLiteDatabase com.example.wordcard2.DataBaseHelper.getReadableDatabase()' on a null object reference
at com.example.wordcard2.SubActivity.getWordList(SubActivity.java:80)
at com.example.wordcard2.SubActivity.onCreate(SubActivity.java:40)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/10/06 08:08
2016/10/06 08:24
2016/10/06 08:36