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

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

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

В каком месте кода нужно вызвать LoaderManager при работе с диалогами? - Программирование Android

03.12.2013, 17:46. Просмотров 297. Ответов 0
Метки нет (Все метки)

Здравствуйте. У меня вот такой вопрос: у меня есть список, который заполняется из базы данных с помощью CursorLoader. При долгом нажатии на одном из пунктов этого списка выскакивает АлертДиалог, который спрашивает нужно ли удалить этот конкретный пункт из списка или нет. Если нажать "да", то пункт удаляется, но вот обновление списка не происходит, и чтобы увидеть изменение списка нужно снова вызвать диалоговое окно (не обязательно при этом удалять другой пункт, можно нажать отмену). Где правильно вызвать ЛоадМенеджер? При моей реализации в методе onItemLongClick происходит именно то, что я описывал. Приведу код:
MainActivity
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
lvMain.setOnItemLongClickListener(new OnItemLongClickListener() {
 
            @Override
            public boolean onItemLongClick(AdapterView<?> parent, View v, int position, long id) {
                dialog.setId(id);
                dialog.setDb(itemsDB);
                dialog.show(getFragmentManager(), "dialog");
                getLoaderManager().getLoader(0).forceLoad();
                return false;
            }
        });

Dialog (пробовал вызвать в onClick, но в таком случае приложение зависает и выкидывается)
Кликните здесь для просмотра всего текста
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
public class Dialog extends DialogFragment implements OnClickListener {
 
    SQLiteDatabase db;
    long id;
 
    public void setDb(ItemsDB db) {
        this.db = db.getWritableDatabase();
    }
 
    public void setId(long id) {
        this.id = id;
    }
 
    public AlertDialog onCreateDialog(Bundle savedInstanceState) {
        AlertDialog.Builder dialog = new AlertDialog.Builder(getActivity())
                                                            .setTitle("Удаление")
                                                            .setPositiveButton("Да", this)
                                                            .setNegativeButton("Нет", this)
                                                            .setMessage("Вы действительно хотите удалить покупку?");
        return dialog.create();
    }
 
    @Override
    public void onClick(DialogInterface d, int which) {
        // TODO Auto-generated method stub
        switch(which) {
        case AlertDialog.BUTTON_POSITIVE:
            db.delete(ItemsDB.ITEM_TABLE, ItemsDB.ID + "=" + id, null);
            break;
        case AlertDialog.BUTTON_NEGATIVE:
            break;
        }
    }
    
    public void onDismiss(DialogInterface dialog) {
        super.onDismiss(dialog);
    }
 
    public void onCancel(DialogInterface dialog) {
        super.onCancel(dialog);
    }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.12.2013, 17:46     В каком месте кода нужно вызвать LoaderManager при работе с диалогами?
Посмотрите здесь:

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

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

Вызвать функцию при нажатии клавиши на виртуальной клавиатуре - Программирование Android
Хочу добавить определенную функцию при нажатии конкретной клавиши на виртуальной клавиатуре. Мне нужно создавать собственную клавиатуру или...

Как вызвать метод только при последующих запусках приложения? - Программирование Android
Доброго времени суток))) В приложении реализую систему сохранения. Нужно, чтобы при первом запуске появлялись &quot;дефолтные&quot; значения, а при...

Ошибка при работе с сетью - Программирование Android
Всем привет, в ходе разработки возникла такая проблема: есть приложение отправляющее введенные строки на сервер(написан на java,...

Потоки при работе с камерой - Программирование Android
Что будет есть в public void onPictureTaken(byte data, Camera camera) повесить тяжелые расчеты, data будет все время меняться или...

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

Русский язык при работе с бд - Программирование Android
Перерыл кучу примеров работой с базами sql и mysql ,но так и не нашел как сделать ввод русского языка,как например сделать чтобы в edittext...

Ошибка при работе с сетью - Программирование Android
Нужна помощь в поиске ошибки. При запуске приложение сразу закрывается. Код MainActivity package com.example.nestro.dut_rozklad; ...

Ошибка при работе с фрагментами - Программирование Android
Soory if it's unapproprite here, but I do not know what to do. I have just finished my first lesson. Error inflating class fragment--this...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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