Ошибка царства Android в RealmConfiguration - PullRequest
0 голосов
/ 03 мая 2018

Я просто новичок в базе данных Realm ... это приложение для записи String в базе данных Realm и чтения его ...

когда я запустил свое приложение, оно показало мне остановилось

моя ошибка в каталоге RealmConfiguration, как показано в logcat ...

это мой код:

ObjectRealm Class

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 class

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);

}

}

MainActivity

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 class

как это

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();

1 Ответ

0 голосов
/ 03 мая 2018
@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 и новее

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...