在使用android时,我已经阅读了大量有关如何创建和使用数据库连接的博客和教程.虽然我有很多工作示例,但不同的实现会导致不同的问题.
例如,我使用数据源类Datasource和数据库助手类DBManagement.
数据源
public class DataSource {
// Database fields
private SQLiteDatabase database;
private DBManagement dbHelper;
public SMSDataSource(Context context) {
dbHelper = new DBManagement(context);
}
public void open() throws SQLException {
if(database == null){
database = dbHelper.getWritableDatabase();
}
}
public Cursor exampleCursor(long constraint){
Cursor cur = database.query(DBManagement.TABLE_NAME,
new String[] {DBManagement.Column}, "constraint="+constraint, null, null, null, null);
return cur;
}
//.. other methods down here which do rawQuery, QueryBuilder, etc..
Run Code Online (Sandbox Code Playgroud)
DBManagement
public class DBManagement extends SQLiteOpenHelper{
// .. …Run Code Online (Sandbox Code Playgroud) 我有一个Intent,通过一个很长的Extra从我的数据库中获取信息.它还设置了Activity通过a 的标题String Extra.
现在,当我第一次启动活动时,一切都显示出来.但是我有另一个Activity用于添加新的数据库项.问题是,当我按下后退按钮(操作栏中的徽标旁边有一个箭头)时,回到原来的Activity,似乎Extras已经消失,因为标题ListView是空的.
这是启动时显示ListView没有问题的Activity:
DaysActivity.java:
package com.gauvion.gfit;
import android.annotation.SuppressLint;
import android.app.ListActivity;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.SimpleCursorAdapter;
import android.widget.Toast;
public class DaysActivity extends ListActivity {
private DaysDataSource datasource;
private SimpleCursorAdapter dataAdapter;
private boolean isEditing = false;
private Toast toast_deleted;
private String[] columns = new String[] { MySQLiteHelper.COLUMN_NAME, MySQLiteHelper.COLUMN_DAY };
private int[] to;
private long routineDataID;
private String routineDataName;
@SuppressLint("ShowToast")
@Override
public void onCreate(Bundle savedInstanceState) { …Run Code Online (Sandbox Code Playgroud)