因此,在Java和布局XML中,我有两个活动,实际上几乎都是相同的,但是当我在两个活动上运行相同的数据库游标时,一个活动停止,而另一个活动就很好了。
MainActivity.java-此活动正常工作
public class MainActivity extends AppCompatActivity {
Database database;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
database = new Database(this);
setContentView(R.layout.activity_main);
displayTasks();
}
public void displayTasks() {
Cursor cursor = database.getTasks();
}
}
SearchActivity.java-这会不断出错。
public class SearchActivity extends AppCompatActivity {
Database database;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
database = new Database(this);
setContentView(R.layout.activity_search);
displayTasks();
}
public void displayTasks() {
Cursor cursor = database.getTasks();
}
}
Database.java
public class Database extends SQLiteOpenHelper {
...
public Cursor getAllTasks(String username) {
SQLiteDatabase database = this.getWritableDatabase();
Cursor cursor = database.rawQuery("select * from table", null);
return cursor;
}
}
答案 0 :(得分:0)
不再需要Cursor
实例的任何地方都将其关闭。一个合适的地方是onStop()
生命周期的Activity
方法:
@Override
protected void onStop() {
super.onStop();
cursor.close();
}
请考虑在您的MainActivity
和SearchActivity
中都这样做。