Я пытаюсь использовать базу данных дескриптора со вставкой, обновлением и удалением, например, блокнот. У меня проблема с обратным ключом, потому что когда я нажимаю клавишу «Назад», я не хочу сохранять какие-либо данные. В нормальном случае, который нажимает кнопку подтверждения, он будет сохранен в sqlite и будет отображаться в списке. Как я могу сделать событие отмены через кнопку «Назад» или более кнопку? Я пытаюсь использовать onBackPressed, onPause и onResume. Когда я нажимаю клавишу «Назад» на странице редактирования, onPause() вызывает, но я не хочу использовать saveState(), когда я нажимаю клавишу «Назад». Как я могу это сделать? Не могли бы вы дать мне несколько отзывов? Спасибо.Android как отменить событие с помощью клавиши возврата без сохранения данных
@Override
protected void onPause() {
Toast.makeText(this, "onPause", Toast.LENGTH_SHORT).show();
super.onPause();
saveState();
}
@Override
protected void onResume() {
Toast.makeText(this, "onResume", Toast.LENGTH_SHORT).show();
super.onResume();
Resume_populateFields();
}
@Override
public void onBackPressed() {
Toast.makeText(this, "onBackPressed", Toast.LENGTH_SHORT).show();
super.onBackPressed();
finish();
}
private void saveState() {
String name = (String) nameEdit.getText().toString();
String category = (String) categoryEdit.getText().toString();
String expired_date = (String) expired_Date_Btn.getText().toString();
Bitmap imageBitmap = ((BitmapDrawable) mImageView.getDrawable())
.getBitmap();
ByteArrayOutputStream imageByteStream = new ByteArrayOutputStream();
imageBitmap.compress(Bitmap.CompressFormat.PNG, 100, imageByteStream);
if (mRowId == null) {
long id = mDbHelper.insertItem(category, name, expired_date,
imageByteStream);
if (id > 0) {
mRowId = id;
}
} else {
mDbHelper.updateItem(mRowId, category, name, expired_date,
imageByteStream);
}
}
private void Resume_populateFields() {
if (mRowId != null) {
Cursor data = mDbHelper.fetchItem(mRowId);
startManagingCursor(data);
// load information from sqlite
nameEdit.setText(data.getString(data
.getColumnIndexOrThrow(FridgeDbAdapter.KEY_NAME)));
categoryEdit.setText(data.getString(data
.getColumnIndexOrThrow(FridgeDbAdapter.KEY_CATEGORY)));
expired_Date_Btn.setText(data.getString(data
.getColumnIndexOrThrow(FridgeDbAdapter.KEY_EXPIRED_DATE)));
} else {
// call display date when list is clicked
expired_Date_Btn.setText(new StringBuilder().append(mDay)
.append("/")
// month is 0 based. Then add 1
.append(mMonth + 1).append("/").append(mYear).append(" "));
}
}
Черт побери, я был на полпути через письмо, что – zode64
Спасибо за ваш ответ !! это просто, и он работает правильно. – wholee1