我有一个从现有数据库填充的ListView,当用户点击每个项目时,其中一个列应显示在第二个活动(Like dictionary App
上)
但我无法对第二项活动执行任何查询。
我正在使用SqliteAssetHelper
库。
数据库类:
public class MyDatabase extends SQLiteAssetHelper {
private static final String DATABASE_NAME = "database.db";
private static final int DATABASE_VERSION = 1;
public MyDatabase(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
}
在第一个活动中,listView从数据库中填充:
private void fillFromDb() {
G.itemLists.clear();
Cursor cursor = mydb.rawQuery("select * from test order by title limit 0,50 ", null);
while (cursor.moveToNext()) {
StructNote test1 = new StructNote();
test1.title = cursor.getString(cursor.getColumnIndex("title"));
G.itemLists.add(test1);
}
cursor.close();
mydb.close();
adapter.notifyDataSetChanged();
}
但问题出在第二项活动中;我无法执行任何查询!
public class ActivityResult extends Activity {
private MyDatabase MyDataBase;
public SQLiteDatabase mydb;
@Override
protected void onResume() {
G.currentActivity = this;
super.onResume();
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.result);
Cursor cursor = mydb.rawQuery("SELECT * FROM test ", null);
while (cursor.moveToNext()) {
try {
Log.i("LOG", cursor.getString(cursor.getColumnIndex("title")));
}
catch (Exception e) {}
}
cursor.close();
mydb.close();
}
}
logcat:NullPointerException
非常感谢......
我的问题不重复!我发现有关NullPointerException的其他答案并没有完全解决我的问题:)
因为我的问题和解决方案只是使用了SqliteAssetHelper
库,所以我找不到任何关于它的内容;)
答案 0 :(得分:1)
根据 SqliteAssetHelper 库文档:
https://github.com/jgilfelt/android-sqlite-asset-helper
MyDataBase = new MyDatabase(this);
应设置OnCreate方法...
所以我的第二项活动应改为:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.result);
MyDataBase = new MyDatabase(this); // <-----
mydb = MyDataBase.getWritableDatabase(); // <-----
Cursor cursor = mydb.rawQuery("SELECT * FROM test ", null);
while (cursor.moveToNext()) {
try {
Log.i("LOG", cursor.getString(cursor.getColumnIndex("title")));
}
catch (Exception e) {}
}
cursor.close();
mydb.close();
}