【问题标题】:android Realm Error in RealmConfigurationRealmConfiguration中的android领域错误
【发布时间】:2018-05-03 02:01:27
【问题描述】:

我是 Realm 数据库的新手...这是用于在 Realm DB 中写入字符串并读取它的应用程序...

当我运行我的应用程序时,它显示它已停止

我在 RealmConfiguration 目录中的错误,如 logcat 中所示...

这是我的代码:

ObjectRealm 类

public class ObjectRealm extends RealmObject {

@PrimaryKey
private int id;
private String myTitle ;

 public ObjectRealm() {
 }

 public ObjectRealm(int id, String myTitle) {
    this.id = id;
    this.myTitle = myTitle;
 }

 public int getId() {
    return id;
 }

 public void setId(int id) {
    this.id = id;
 }

 public String getMyTitle() {
    return myTitle;
 }

 public void setMyTitle(String myTitle) {
    this.myTitle = myTitle;
 }

 @Override
 public String toString() {
    return "ObjectRealm{" +
            "id=" + id +
            ", myTitle='" + myTitle + '\'' +
            '}';
 }

}

BaseApplication 类

public class BaseApplication extends Application {


@Override
public void onCreate() {
    super.onCreate();

    String rootPath = Environment.getExternalStorageDirectory().getAbsolutePath();

    Realm.init(this);

    RealmConfiguration config = new RealmConfiguration.Builder()
            .name("myRealm")
            .directory(new File(rootPath + "/in MyFile/"))
            .build();

    Realm realm = Realm.getInstance(config);

}

}

主活动

public class MainActivity extends AppCompatActivity {


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    Realm realm = Realm.getDefaultInstance();
    realm.beginTransaction();

    for(int i =0 ;i<5;i++){
        ObjectRealm person = new ObjectRealm(i+1 ,"Title number : " + i+1);
    }
    realm.commitTransaction();
    showMe();

}

private void showMe() {
    Realm realm = Realm.getDefaultInstance();
    RealmQuery<ObjectRealm> query = realm.where(ObjectRealm.class);
    RealmResults<ObjectRealm> result = query.findAll();
    for (ObjectRealm e : result) {
        Log.d("asd", "showMe: " + e.toString());
    }
}
}

我的清单文件

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.lenovo.tryrealm">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <application
        android:name=".BaseApplication"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

    </manifest>

我添加了读写外部存储的权限和BaseApplication的名称

为什么它不起作用?我的错误在哪里?

当我更改代码时

BaseApplication 类

喜欢这个

public class BaseApplication extends Application {


@Override
public void onCreate() {
    super.onCreate();

    RealmConfiguration realmConfiguration = new RealmConfiguration.Builder(this)
            .build();
    Realm.setDefaultConfiguration(realmConfiguration);

}

}

我遇到了这样的错误

error: Builder(Context) is not public in Builder; cannot be accessed from outside package
    RealmConfiguration realmConfig = new RealmConfiguration.Builder(this).build();

【问题讨论】:

    标签: android realm


    【解决方案1】:
    @Override
    public void onCreate() {
        super.onCreate();
    
        RealmConfiguration realmConfiguration = new RealmConfiguration.Builder(this)
                .build();
        Realm.setDefaultConfiguration(realmConfiguration);
    
    }
    

    应该是

    @Override
    public void onCreate() {
        super.onCreate();
    
        Realm.init(this);
        RealmConfiguration realmConfiguration = new RealmConfiguration.Builder()
                .build();
        Realm.setDefaultConfiguration(realmConfiguration);
    
    }
    

    自 Realm 2.0.0 及更高版本

    【讨论】:

    • 我喜欢这样做,但在 logcat 中它说 MainActivity 中的“realm = Realm.getDefaultInstance();”行有错误
    • 这是我删除后的错误 "realm = Realm.getDefaultInstance(); " ... 错误 ` 原因:java.lang.NullPointerException: 尝试调用虚拟方法'void io.realm.Realm.beginTransaction()' 在空对象引用上`
    • 您在没有先致电 Realm.getDefaultInstance() 的情况下致电 realm.beginTransaction()。阅读文档以获得一些指导。
    猜你喜欢
    • 1970-01-01
    • 2019-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-22
    • 2017-03-22
    • 1970-01-01
    相关资源
    最近更新 更多