2016-08-16 1 views
0

Проблема Решенный

проблема решена путем замены realm.commitTransaction(); с realm.copyToRealm(item);Android Realm получить не внутри Ошибка транзакции

Проблема

Когда я получаю данные из диалогового окна с помощью слушателя, как interface и попытаться сохранить выбранные данные в виде класса. я не могу создать новую строку в таблице

получить данные из диалога:

takeUserEwalletCurrency.setOnTakeUserEwallet(new TakeUserEwalletCurrency.IOnChooseEwallet() { 
    @Override 
    public void getItem(int item) { 
     takeUserEwalletCurrency.dismissDialog(); 
     switch (item) { 
      case 1: 
       String choiceUSDUserEwallet = "SHUSD" + userPhoneNumber.substring(1, userPhoneNumber.length()); 
       updateEwalletsHistory(choiceUSDUserEwallet, "SHUSD"); 
       to_ewallet.setText(choiceUSDUserEwallet); 
       validateEnteredEwalletNumber(); 
       break; 
      case 2: 
       ... 
       break; 
     } 
    } 
}); 
takeUserEwalletCurrency.showDialog(); 

Создать новую строку:

private void updateEwalletsHistory(final String currentEwallet, final String ewalletCurrency) { 
    final EwalletsHistory exists_row = realm.where(EwalletsHistory.class).equalTo("ewalletName", currentEwallet).findFirst(); 

    if (exists_row == null) { 
     realm.executeTransaction(new Realm.Transaction() { 
      @Override 
      public void execute(Realm realm) { 
       EwalletsHistory item = new EwalletsHistory(); 
       item.setEwalletName(currentEwallet); 
       item.setEwalletCurrency(ewalletCurrency); 
       realm.commitTransaction(); 
      } 
     }); 
    } 
} 

оба из них, такие как Диалог интерфейса и создать новую строку в таблице та же деятельность

ответ

1

Это потому, что вы звоните commitTransaction() внутри executeTransaction().

executeTransaction() ручки begin/commit/cancelTransaction() способ звонки.

+0

Да, вы правы, спасибо –

Смежные вопросы