相同活动上的游标不断停止应用

时间:2019-12-14 10:32:01

标签: java android sqlite android-sqlite

因此,在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;
    }

}

1 个答案:

答案 0 :(得分:0)

不再需要Cursor实例的任何地方都将其关闭。一个合适的地方是onStop()生命周期的Activity方法:

@Override
protected void onStop() {
    super.onStop();
    cursor.close();
}

请考虑在您的MainActivitySearchActivity中都这样做。