RealmTransactions IDE 编辑器错误:预期的标识符



我正在看一个领域教程,并试图在OnEditorActionListener中实现代码。这就是代码。我使用的是Java 7,所以没有lambda。IDE 指出错误在新Realm之前。 Transaction.Callback***所在的位置,以及预期的标识符。

    myEditText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
        @Override
        public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
            if(actionId == EditorInfo.IME_ACTION_DONE){
                if (myEditText.getText()!=null){
                    Realm.Transaction myTr = new Realm.Transaction() {
                        @Override
                        public void execute(Realm realm) {
                            Task newTask = realm.createObject(Task.class);
                            newTask.setText(myEditText.getText().toString());
                        }
                    }, *** new Realm.Transaction.Callback(){
                        @Override
                        public void onSuccess() {
                            Log.d("REALM TASK", "saved successfully");
                        }
                        @Override
                        public void onError(Exception ignore) {
                            Log.d("REALM TASK", "not saved");
                        }
                    };
                }
                finish();
                return true;
            }
            else {   return false;    }
        }
    });

我试过了:

Realm.Transaction.Callback myCallback = (Realm.Transaction.Callback) myTr.Callback;

而不是

                Realm.Transaction myTr = new Realm.Transaction() {
                    @Override
                    public void execute(Realm realm) {
                        Task newTask = realm.createObject(Task.class);
                        newTask.setText(myEditText.getText().toString());
                    }
                }, *** new Realm.Transaction.Callback(){
                    @Override
                    public void onSuccess() {
                        Log.d("REALM TASK", "saved successfully");
                    }
                    @Override
                    public void onError(Exception ignore) {
                        Log.d("REALM TASK", "not saved");
                    }
                };

应该是

                final String text = myEditText.getText().toString();
                realm.executeTransactionAsync(new Realm.Transaction() {
                    @Override
                    public void execute(Realm realm) {
                        Task newTask = realm.createObject(Task.class);
                        newTask.setText(text);
                    }
                }, new Realm.Transaction.Callback() {
                    @Override
                    public void onSuccess() {
                        Log.d("REALM TASK", "saved successfully");
                    }
                    @Override
                    public void onError(Exception e) {
                        Log.d("REALM TASK", "not saved", e);
                    }
                });

最新更新