誰かが私がsqliteを開いてbbddとカーソルを閉じるべきであると教えてくれる?bbddを閉じるときとカーソルを閉じるとき?
android.database.sqlite:私は私に言った項目のログ猫をクリックした場合
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.listatab);
context = getBaseContext();
//Creamos la instancia de DataBaseHelper, un cursor y aplicamos el metodo getNombres al cursor y llamamos al metodo encargado de gestioanr ese cursor
ayudabbdd = new DataBaseHelper(this);
nombresC = (Cursor) ayudabbdd.getNombres();
startManagingCursor(nombresC);
nombresC.moveToFirst();
//Para crear un simpleCursorAdapter necesitamos
//Contexto this
//Layour donde se mostrara el resultado, generalmente un textview
//Cursor
//Cual sera el campo que recibiremos de la BBDD
//Donde tenemos que poner esa informacion, generalmente el ID correspondiente al textvies del layour del segundo parametro
String[] deNombre = new String[]{DataBaseHelper.CNOMBRE};
int[] aNombre = new int[]{R.id.nombreLugar};
lugaresNombre = new SimpleCursorAdapter(this, R.layout.entrada_lista, nombresC, deNombre, aNombre);
setListAdapter(lugaresNombre);
listaview= getListView();
listaview.setOnItemClickListener(this);
}
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
Intent intent = new Intent(listatab.this, mostrarLugar.class);
startManagingCursor(nombresC);
String nombreClicks= nombresC.getString(nombresC.getColumnIndex("nombre"));
intent.putExtra("nombre",nombreClicks);
startActivity(intent);
nombresC.close();
}
@Override
public void onDestroy()
{
nombresC.close();
ayudabbdd.close();
super.onDestroy();
}
@Override
protected void onPause() {
nombresC.close();
ayudabbdd.close();
super.onPause();
}
第二のクラスで:
が、私はこのクラス
public class DataBaseHelper
{
Context context;
private static final String DATABASE_NAME="lugaresbbdd";
private SQLiteDatabase db; // Referencia al manager.
private final int DB_VERSION = 1; // version
CustomSQLiteOpenHelper helper;
// Nombres para las tablas y campos
private final String TABLE_NAME = "lugares";
private final String TABLE_ROW_ID = "_id";
static String CNOMBRE = "nombre";
private final String CDESC = "descripcion";
private final String CLAT = "latitud";
private final String CLONG="longitud";
static String CFOTO="foto";
public DataBaseHelper(Context context)
{
this.context = context;
//Crea o abre la BBDDD
CustomSQLiteOpenHelper helper = new CustomSQLiteOpenHelper(context);
db = helper.getWritableDatabase();
}
public Cursor getNombres(){
//CustomSQLiteOpenHelper helper = new CustomSQLiteOpenHelper(context);
//db = helper.getWritableDatabase();
Cursor respuesta = db.rawQuery("select "+TABLE_ROW_ID+","+CNOMBRE+" from "+TABLE_NAME, null);
return respuesta;
}
そして、これを持っています。 DatabaseObjectNotClosedException:ここで開かれたカーソルまたはデータベースオブジェクトがアプリケーションによって閉じられていません
しかし、onCreateメソッドでカーソルを閉じると、リストビューに表示されないで、カーソルnombresCを閉じる必要がありますか?
私のコードを編集して私にもっと簡単に回答してください – colymore
私は自分の答えに更新を加えました。 – Yury