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

ListView+onCreateContextMenu->AlertDialog->dbSQLite - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Xml Yahoo http://www.cyberforum.ru/android-dev/thread1362830.html
Всем привет, помогайте, ничего не могу понять(( Вкраце, юзаю Yahoo для получения списка городов, рагаюсь у них получаю appid. Дальше весело...
Программирование Android Приоритет отображения анимации интерфейса Здравствуйте. Проблема в следующем: Дано: В LinerLoyout есть три элемента (кнопка), они расположены рядом друг с другом, к каждой кнопке привязана анимация которая срабатывает при нажатии. ... http://www.cyberforum.ru/android-dev/thread1362717.html
Canvas поверх GridLayout Программирование Android
Рад всех приветствовать! Чтобы лучше понять мой вопрос, представьте себе игру крестики-нолики. Когда кто-нибудь выигрывает, выигрышный ряд зачёркивается линией. Так вот, у меня имеется таблица...
Программирование Android Получить путь к карте памяти (SD card)
Не педелитесь методом, который возвращает путь к карте памяти, если она есть? Нащел вот такой метод в интернете, но на некоторых устройствах работает некорректо. Например на galaxy s3 все ок, а вот...
Программирование Android Как частично заполнить цветом кнопку http://www.cyberforum.ru/android-dev/thread1362671.html
Всем привет.Подскажите как частично заполнить цветом кнопку как на картинке, с возможностью регулирования заполненности. Спасибо.
Программирование Android Если смысл использовать login activity в Android Studio? Или писать самому? Есть ли исходники логин-пароль окна? подробнее

Показать сообщение отдельно
disx
22 / 22 / 0
Регистрация: 26.02.2014
Сообщений: 547
Записей в блоге: 1

ListView+onCreateContextMenu->AlertDialog->dbSQLite - Программирование Android

27.01.2015, 10:08. Просмотров 379. Ответов 13
Метки (Все метки)

Прошу помощи, т.к. вроде все складно, но не работает, вероятно проблема в получении id для передачи в метод updRec, подскажите пожалуйста кто сможет, несмотря на то что AlertDialog устарел присутствует странное и непреодолимое чувство разобраться и поставить точку в данном вопросе.

OneActivity.java содержит:

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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.one);
 
        DB.etName = (EditText) findViewById(R.id.editText1);
        // открываем подключение к БД
        db = new DB(this);
        db.open();
 
        // получаем курсор
        cursor = db.getAllData();
        startManagingCursor(cursor);
 
        // формируем столбцы сопоставления
        String[] from = new String[] { DB.COLUMN_TXT };
        int[] to = new int[] {R.id.tvText };
 
        // создааем адаптер и настраиваем список
        scAdapter = new SimpleCursorAdapter(this, R.layout.item, cursor, from,
                to);
        lvData = (ListView) findViewById(R.id.listView1);
        lvData.setAdapter(scAdapter);
 
        // добавляем контекстное меню к списку
        registerForContextMenu(lvData);
        
        
        
    }
    public void onCreateContextMenu(ContextMenu menu, View v,
            ContextMenuInfo menuInfo) {
        super.onCreateContextMenu(menu, v, menuInfo);
        menu.add(0, CM_EDIT_ID, 0, R.string.edit_record);
        menu.add(0, CM_DELETE_ID, 0, R.string.delete_record);
    }
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
            long arg3) {
        
        final EditText textName = (EditText)findViewById(R.id.editText1);
        //cursor.moveToPosition(this.getSelectedItemPosition());
        id_col=cursor.getInt(0);
        textName.setText(cursor.getString(1));
        
        ContentValues val=new ContentValues(2);
        val.put(DB.COLUMN_TXT, textName.getText().toString());
        cursor.requery();
        // TODO Auto-generated method stub
        
    }
    @SuppressWarnings("deprecation")
    public boolean onContextItemSelected(MenuItem item) {
        
        if (item.getItemId() == CM_EDIT_ID) {
            AdapterContextMenuInfo acmi = (AdapterContextMenuInfo) item
                    .getMenuInfo();
            cursor.moveToPosition(acmi.position);
            showDialog(IDD_EDIT);
        
        }
 
        if (item.getItemId() == CM_DELETE_ID) {
            // получаем из пункта контекстного меню данные по пункту списка
            AdapterContextMenuInfo acmi = (AdapterContextMenuInfo) item
                    .getMenuInfo();
            // извлекаем id записи и удаляем соответствующую запись в БД
            db.delRec(acmi.id);
            // обновляем курсор
            cursor.requery();
            return true;
        }
        return super.onContextItemSelected(item);
    }
 
    @Override
    protected void onPrepareDialog(int id, Dialog dialog) {
        super.onPrepareDialog(id, dialog);
        
    removeDialog(id);       
    }
    @SuppressLint("InflateParams")
    protected Dialog onCreateDialog(int id) {
        switch (id) {
        case IDD_EDIT:
            LayoutInflater inflater = LayoutInflater.from(this);
            View root = inflater.inflate(R.layout.dial, null);
            final EditText textName = (EditText) root.findViewById(R.id.name);
 
            textName.setText(cursor.getString(2));
 
            AlertDialog.Builder builder = new AlertDialog.Builder(this);
            builder.setView(root);
            builder.setTitle(R.string.title_edit);
            builder.setPositiveButton("Yes",
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int id) {
                            
                             String name = textName.getText().toString();
                            
                             
                db.updRec(id, name);//думаю что проблема в получении id, 
                      //но могу ошибаться, "зеленый" еще.
                                        
                        }
                    });
            builder.setNegativeButton("No",
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int id) {
                            
                            dialog.cancel();
                             
                        }
                    });
            
            builder.setCancelable(false);
            removeDialog(id);
            return builder.create();
        default:
            return null;
        }
    }
DB.java содержит:

Java
1
2
3
4
5
6
7
8
9
 public void updRec(int id, String name) {
          ContentValues val=new ContentValues();
          name = etName.getText().toString();
            
            val.put(COLUMN_TXT, name);
            
            mDB.update(DB_TABLE, val, "_id = " + id,null);
            
          }
когда после клика на айтеме вылетает алерт диалог с полученным текстом, после изменения кликаем OK и посыпалось:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
01-27 06:58:23.513: E/AndroidRuntime(379): FATAL EXCEPTION: main
01-27 06:58:23.513: E/AndroidRuntime(379): java.lang.NullPointerException
01-27 06:58:23.513: E/AndroidRuntime(379):  at com.crib1.DB.updRec(DB.java:71)
01-27 06:58:23.513: E/AndroidRuntime(379):  at com.crib1.OneActivity$1.onClick(OneActivity.java:148)
01-27 06:58:23.513: E/AndroidRuntime(379):  at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:159)
01-27 06:58:23.513: E/AndroidRuntime(379):  at android.os.Handler.dispatchMessage(Handler.java:99)
01-27 06:58:23.513: E/AndroidRuntime(379):  at android.os.Looper.loop(Looper.java:123)
01-27 06:58:23.513: E/AndroidRuntime(379):  at android.app.ActivityThread.main(ActivityThread.java:3683)
01-27 06:58:23.513: E/AndroidRuntime(379):  at java.lang.reflect.Method.invokeNative(Native Method)
01-27 06:58:23.513: E/AndroidRuntime(379):  at java.lang.reflect.Method.invoke(Method.java:507)
01-27 06:58:23.513: E/AndroidRuntime(379):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
01-27 06:58:23.513: E/AndroidRuntime(379):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
01-27 06:58:23.513: E/AndroidRuntime(379):  at dalvik.system.NativeStart.main(Native Method)
помогите пожалуйста поправить?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru