【问题标题】:Realm Insert NullPointerException [duplicate]领域插入 NullPointerException [重复]
【发布时间】:2017-12-23 10:38:25
【问题描述】:

将 List 插入 Realm 时,NullPointerException 抛出。 请任何人帮助我。

你能推荐我在 Android 领域数据库管理的最佳实践吗

我的代码:

public class DrinksFragment
        extends Fragment {

    private Realm realm;

    @Override
    public View onCreateView(
            LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_drinks, container, false);
        Realm.init(getActivity());
        realm = Realm.getDefaultInstance();
        return view;
    }

    public boolean drinksToDB(final List<ProductModel> productModel) {
        realm.executeTransactionAsync(new Realm.Transaction() {
            @Override
            public void execute(Realm bgrealm) {
                RealmList<ProductModel> realproductList = new RealmList<>();
                realproductList.addAll(productModel);
            }
        }, new Realm.Transaction.OnSuccess() {
            @Override
            public void onSuccess() {
                Log.d("REALM_DB_INSERT", "Data Inserted");
            }
        }, new Realm.Transaction.OnError() {
            @Override
            public void onError(Throwable error) {
                Log.d("REALM_DB_INSERT", error.getMessage());
            }
        });

        return true;
    }
}

【问题讨论】:

  • @噪声发生器。你发出非常糟糕的噪音。请完整阅读此问题,然后标记它
  • 你应该真正了解什么是 NPE 以及如何修复它。

标签: java android nullpointerexception realm


【解决方案1】:

我建议你这样做:

首先,当你打开你的应用程序时,只立即初始化一次 Realm:

public class StartApplication
            extends Application {

        @Override
        public void onCreate() {
            super.onCreate();
            Realm.init(getApplicationContext());
        }
}

然后你就可以通过这种方式到处获取领域对象了:

Realm realm = Realm.getDefaultInstance();

【讨论】:

  • 是的,我已经在应用程序类中完成了
  • @NatheemYousuf 所以你不必写 Realm.init(getActivity());在你的片段中。删除该行。
  • 没有运气 @Curio java.lang.NullPointerException: 尝试调用虚拟方法 'io.realm.RealmAsyncTask io.realm.Realm.executeTransactionAsync(io.realm.Realm$Transaction, io.realm.Realm $Transaction$OnSuccess, io.realm.Realm$Transaction$OnError)' 在空对象引用上
  • @NatheemYousuf 你什么时候调用drinkToDB 方法?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-27
  • 1970-01-01
  • 1970-01-01
  • 2017-09-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多