После обновления записи в бд невозможно добавить новую запис

SQLite, Preferences, файлы, SD, Content Provider, XML, JSON
Ответить
Tkas
Сообщения: 5
Зарегистрирован: 24 янв 2012, 16:55

После обновления записи в бд невозможно добавить новую запис

Сообщение Tkas » 04 дек 2013, 18:05

Здравствуйте. У меня есть список, который формируется из базы данных. При нажатии на текстовое поле происходит добавление новой записи. При вызове контекстного меню появляется выбор апдейтить эту выбранную запись или нет. Если выбрать Да, то происходит выбор текстового поля, появляется клавиатура, вводится обновление для записи, и все чудесно перезаписывается. Да вот беда: после апдейта при нажатии на текстовое поле (чтобы ввести новую запись) вместо добавления новой записи снова происходит апдейт той записи, которую мы изменили только что! В итоге ничего нового не добавишь =(

Вот этот код записан непосредственно в методе onCreate. В нем мы после нажатии на Ок скрываем клавиатуру и добавляем новую запись, все тривиально, так делают все)
[syntax=java]edText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_DONE && !edText.getText().toString().equals("")) {
if (getCurrentFocus() != null) {
imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);

ContentValues cv = new ContentValues();
cv.put(ItemsDB.ITEM_NAME, edText.getText().toString());
db.insert(ItemsDB.ITEM_TABLE, null, cv);

edText.setText("");
getLoaderManager().getLoader(0).forceLoad();
}
}
return false;
}
});[/syntax]
А вот код из onContextItemSelected. В нем при нажатии на Да берутся данные пункта, вызывается клава, и после нажатия на Ок идет перезапись
[syntax=java]public boolean onContextItemSelected(MenuItem item) {

switch(item.getItemId()) {
case 0:
break;
case 1:
// получаем из пункта контекстного меню данные по пункту списка
acmi = (AdapterContextMenuInfo) item.getMenuInfo();
imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(edText, 0);

edText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_DONE && !edText.getText().toString().equals("")) {
if (getCurrentFocus() != null) {
imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);

ContentValues cv = new ContentValues();
cv.put(ItemsDB.ITEM_NAME, edText.getText().toString());
db.update(ItemsDB.ITEM_TABLE, cv, ItemsDB.ID + "=?", new String[] { String.valueOf(acmi.id) });

edText.setText("");
getLoaderManager().getLoader(0).forceLoad();
}
}
return false;
}
});
}
return super.onContextItemSelected(item);
}[/syntax]
В чем может быть проблема?

Tkas
Сообщения: 5
Зарегистрирован: 24 янв 2012, 16:55

Re: После обновления записи в бд невозможно добавить новую з

Сообщение Tkas » 05 дек 2013, 22:12

Проблема решена.

Ответить