Форум программистов, компьютерный форум CyberForum.ru

Правильное закрытие курсора - Android

Войти
Регистрация
Восстановить пароль
 
nepridumalnick
0 / 0 / 0
Регистрация: 18.09.2013
Сообщений: 17
08.01.2014, 22:08     Правильное закрытие курсора #1
Как правильно закрыть Cursor?
Если делать так:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
....
String []from = {"name","count"};
int[]to ={R.id.backpack_text_1, R.id.backpack_text_2};
Cursor AllData = databaseHelper.getData("coil");
ListAdapter adapter= new SimpleCursorAdapter(Backpack.this,R.layout.backpack_list_item,AllData,from,to);
myListView.setAdapter(adapter);
AllData.close();//!
....
....
public Cursor getData(String table_name){
Cursor cursor = getReadableDatabase().rawQuery("SELECT * FROM " + table_name, null);
return cursor;
}
,
То listview пуст.
А если убрать
[ JAVA]
AllData.close();
[/JAVA]
,то все работает но в логах Sqlite database ругается на не закрытые курсоры
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.01.2014, 22:08     Правильное закрытие курсора
Посмотрите здесь:

Закрытие приложения. Android
Android Закрытие одной активити из другой
Android Activity (сворачивание-возобновление-закрытие)
Android Не правильное отображение Текста
Android Как запретить закрытие активити?
Полное закрытие приложения Android
Правильное использование Material Design Android
Android Правильное проектирование баз данных при очень частом обращении
Как реализовать правильное отображение View элементов? Android
Android Отследить закрытие SearchView Android
Android Не правильное отображение веб страниц в webView
Закрытие Snackbar Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
angryrobot
Командир зеленых роботов
 Аватар для angryrobot
346 / 283 / 53
Регистрация: 08.10.2013
Сообщений: 563
09.01.2014, 10:25     Правильное закрытие курсора #2
Цитата Сообщение от nepridumalnick Посмотреть сообщение
Sqlite database ругается на не закрытые курсоры
А в какой момент она ругаться начинает? Когда активити закрывается? А что если переместить код закрытия курсора в метод onDestroy ?
nepridumalnick
0 / 0 / 0
Регистрация: 18.09.2013
Сообщений: 17
09.01.2014, 18:34  [ТС]     Правильное закрытие курсора #3
Дело в том, что это вкладки, вот весь код:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
 package ua.alexandrshirokih.myfishing;
 
import android.app.TabActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.*;
import android.widget.TabHost;
import android.database.Cursor;
 
public class Backpack extends TabActivity
{DataBaseHelper databaseHelper;
    final String TABS_TAG_1="fishing_rods";
    final String TABS_TAG_2="coil";
    final String TABS_TAG_3="fishing_line";
    final String TABS_TAG_4="hooks";//крючки
    final String TABS_TAG_5="bait";//наживки
    int[] m_rods_param3 ={5000,7000,9000,12000,15000,20000,25000,29000,34000,55000,60000,64000,69000,73000};
    int[] m_coil_param3 ={5000,8000,12000,17000,22000,27000,35000,37000,43000,50000,55000,61000};
    int[] m_lesparam3 ={3000,6000,10000,17000,26000,35000,45000,50000,65000};
    /** Called when the activity is first created. */ 
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.backpack_tab);
        databaseHelper = new DataBaseHelper(this);
        final TextView money_tv = (TextView) findViewById(R.id.lvMain);
        int money = databaseHelper.market_upd_r();
        money_tv.setText("денег: " + String.valueOf(money) + "$");
 
        TabHost tabHost = getTabHost();
        TabHost.TabSpec tabSpec;
        tabSpec = tabHost.newTabSpec(TABS_TAG_1);
        tabSpec.setIndicator("Спининги" , getResources().getDrawable(R.drawable.tab_icon_spining));
        tabSpec.setContent(TabFactory);
        tabHost.addTab(tabSpec);
 
        tabSpec = tabHost.newTabSpec(TABS_TAG_2);
        tabSpec.setIndicator("Катушки" , getResources().getDrawable(R.drawable.tab_icon_coil));
        tabSpec.setContent(TabFactory);
        tabHost.addTab(tabSpec);
 
 
        tabSpec = tabHost.newTabSpec(TABS_TAG_3);
        tabSpec.setIndicator("Лески" , getResources().getDrawable(R.drawable.tab_icon_leska));
        tabSpec.setContent(TabFactory);
        tabHost.addTab(tabSpec);
 
        tabSpec = tabHost.newTabSpec(TABS_TAG_4);
        tabSpec.setIndicator("Крючки" , getResources().getDrawable(R.drawable.tab_icon_kruchok));
        tabSpec.setContent(TabFactory);
        tabHost.addTab(tabSpec);
 
        tabSpec = tabHost.newTabSpec(TABS_TAG_5);
        tabSpec.setIndicator("Наживки" , getResources().getDrawable(R.drawable.tab_icon_nazhivka));
        tabSpec.setContent(TabFactory);
        tabHost.addTab(tabSpec);
    }
    TabHost.TabContentFactory TabFactory = new TabHost.TabContentFactory(){
        @Override
        public View createTabContent(String tag)
        {
            View view = getLayoutInflater().inflate(R.layout.backpack, null);
            String[] from = { "name", "kolvo" };
            int[] to = { R.id.rukzak_text_1, R.id.rukzak_text_2 };
            ListView myList=(ListView)view.findViewById(android.R.id.list);
            String column_name="";
            if (tag == TABS_TAG_1)
            {
                column_name = "fishing_rods";
            }
            if (tag == TABS_TAG_2)
            {
                column_name = "coil";
            }
            if (tag == TABS_TAG_3)
            {
                column_name = "fishing_line";
            }
            if (tag == TABS_TAG_4)
            {
                column_name = "hooks";
            }
            if (tag == TABS_TAG_5)
            {
                column_name = "bait";
            }
            Cursor AllData = databaseHelper.getData(column_name);
            ListAdapter adapter=new SimpleCursorAdapter(Backpack.this, R.layout.backpack_list_item, AllData, from, to);
            myList.setAdapter(adapter);
    //      AllData.close();
            return view;
        }
    };
}
Так случилось, что я пишу на планшете, и тестирую на нем, когда я скопировал код в эклипс, то в эмуляторе такие ошибки не появлялись.я так понимаю, что sqlite ругается, когда я переключаю вкладки.

Добавлено через 18 минут
Блин, как я мог так протупить??? действительно в onDestroy надо было соединение с базой данных закрывать...
Yandex
Объявления
09.01.2014, 18:34     Правильное закрытие курсора
Ответ Создать тему
Опции темы

Текущее время: 04:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru