Добрый день. У меня не получается удалить из базы данных нужную запись, которая была ранее добавлена.
public class Receive extends RealmObject {
private int ID;
private String NAME;
public int getID() { return ID; }
public void setID(int ID) { this.ID = ID; }
public String getNAME() { return NAME; }
public void setNAME(String NAME) { this.NAME = NAME; }
}
Я создал приватный метод, который отвечает за удаления.
private void deleteRealm(int deleteId) {
final RealmResults<Receive> results = realm.where(Receive.class).equalTo("ID", deleteId).findAll();
realm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
results.deleteFromRealm(1); // Что сюда нужно передать, я не знаю.
}
});
}
Этот метод я привязал к обработчику.
Delete = new View.OnClickListener() {
@Override
public void onClick(View v) {
int editId = v.getId();
deleteRealm(SityIDs[editId]); //Передаю ID записи.
}
};
Программа выдает ошибку, она связана в первую очередь с методом, который отвечает за удаление, после лог показывает, что ошибка возникала в обработчику Delete = new View.OnClickListener()
Я так-же пробовал этот метод
final RealmResults<Dog> results = realm.where(Dog.class).findAll();
realm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
// remove single match
results.deleteFirstFromRealm();
results.deleteLastFromRealm();
// remove a single object
Dog dog = results.get(5); // Но я не знаю, что сюда нужно передать
dog.deleteFromRealm();
// Delete all matches
results.deleteAllFromRealm();
}
});
Ошибка
07-22 20:59:41.251 25759-25759/ru.profgrammist.javaandroid E/AndroidRuntime: FATAL EXCEPTION: main
Process: ru.profgrammist.javaandroid, PID: 25759
Theme: themes:{}
java.lang.NullPointerException: Attempt to invoke virtual method 'io.realm.RealmQuery io.realm.Realm.where(java.lang.Class)' on a null object reference
at ru.profgrammist.javaandroid.Zakladka.deleteRealm(Zakladka.java:104)
at ru.profgrammist.javaandroid.Zakladka.access$100(Zakladka.java:26)
at ru.profgrammist.javaandroid.Zakladka$2.onClick(Zakladka.java:69)
at android.view.View.performClick(View.java:5204)
at android.view.View$PerformClick.run(View.java:21156)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5466)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Прежде чем использовать реалм, нужно получить инстанс, т.е. примерно так:
public class MyActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Realm realm = Realm.getDefaultInstance();
try {
// здесь используете realm...
} finally {
realm.close();
}
}
}
Ну или можно привязать это к жизненному циклу активити\фрагмента как-то так:
private Realm realm;
@Override
public void onResume() {
realm = Realm.getDefaultInstance();
super.onResume();
}
@Override
public void onPause() {
realm.close();
super.onPause();
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Здравствуйте, занимаюсь попытками создания крестиков-ноликовСейчас их ввод осуществляется путём указания индекса элемента массива
Я создал свою реализацию ImageView и переопределил метод onDraw(Canvas canvas); Все работает, но я хочу чтоб при нажатии на Button, на моем полотне дополнительно...
Нужен CSS/HTML фреймворк для обычного контентаСуществует ли вообще что-то подобное? Как называются такие фреймворки? Постараюсь объяснить, что...