С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
nepridumalnick
0 / 0 / 0
Регистрация: 18.09.2013
Сообщений: 17
#1

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

08.01.2014, 22:08. Просмотров 761. Ответов 2
Метки нет (Все метки)

Как правильно закрыть 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 ругается на не закрытые курсоры
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.01.2014, 22:08
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Правильное закрытие курсора (Программирование Android):

Не правильное отображение Текста - Программирование Android
Проект в Android Studio, минимальная версия 4.0, максимальная 4.2.2, таргет версия 4.1. Создал пункты меню, латиница отображается...

Правильное использование Material Design - Программирование Android
Добрый день! Как правильно использовать MAterial Design? Android 4.0 - Android 5.0.x Нормально ли использовать ...

Не правильное отображение веб страниц в webView - Программирование Android
Подскажите в чем может быть проблема. в webView открываю страницу mWebView.loadUrl("http://stackoverflow.com"); Страница...

Как реализовать правильное отображение View элементов? - Программирование Android
Здравствуйте! Хочу реализовать что-то похожее, но не пойму как добиться того, чтоб иконка справа отображалась в свой реальный размер, а...

Закрытие Snackbar - Программирование Android
Как сделать чтобы при первом нажатии на FloatingActionButton, Snackbar открывался, а при втором закрывался, а также при нажатии вне области...

Закрытие AlertDialog - Программирование Android
Здравствуйте. Такой вопрос. Допустим я вызвал диалог и после этого перевел приложение в паузу, то после очередного обращения к данному...

2
angryrobot
Командир зеленых роботов
348 / 285 / 53
Регистрация: 08.10.2013
Сообщений: 564
09.01.2014, 10:25 #2
Цитата Сообщение от nepridumalnick Посмотреть сообщение
Sqlite database ругается на не закрытые курсоры
А в какой момент она ругаться начинает? Когда активити закрывается? А что если переместить код закрытия курсора в метод onDestroy ?
1
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 надо было соединение с базой данных закрывать...
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.01.2014, 18:34
Привет! Вот еще темы с ответами:

Закрытие приложения. - Программирование Android
У меня возникли проблемы с методом finish(), подскажите как можно закрыть приложение без ошибки неожиданной остановки (Выскакивает окно...

Правильное проектирование баз данных при очень частом обращении - Программирование Android
Пишу мессенджер и в истории переписок в адаптере очень часто вызывается последнее сообщение для каждого чата и база данных садится, какие...

Полное закрытие приложения - Программирование Android
Здравствуйте. Возник интересный вопрос, как можно полностью закрыть приложение, т.е. не закрыть одно активити, а полностью остановить...

Отслеживание закрытие второго activity - Программирование Android
В приложение есть два активити. Второе вызывается из первого с помощью intent. При закрытии или сворачивании второго требуется произвести...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.