2016-07-29 9 views
0

最近、アンドロイドのためにレルムデータベースに導入されました。それはSQLiteと比較して非常に簡単に思える、私はそれをテストするための簡単なアプリケーションを作った。データは保存されていますが、何らかの理由でデータを取得できません。 アンドロイドのレルムからデータを読み取る際にエラーが発生しました


は、ここで私はあなたが RealmConfiguration Realm.getInstance()にない getApplicationContext()を渡すべきであるデータ
java.lang.UnsatisfiedLinkError: No implementation found for long io.realm.internal.TableView.nativeSync(long) (tried Java_io_realm_internal_TableView_nativeSync and Java_io_realm_internal_TableView_nativeSync__J)

+0

これは、レルムのバージョンは何ですか? 'Realm.getInstance(Context)'コンストラクタは** 0.88.0 **で廃止され、最新バージョンは** 1.1.0 ** – EpicPandaForce

答えて

0

を読むために関数を呼び出すたびにエラーが私たちをポップMainActivity

package com.fayaz.realm; 

public class MainActivity extends AppCompatActivity { 


public Realm realm; 
Button btn; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 
    btn=(Button)findViewById(R.id.btn); 

    realm=Realm.getInstance(getApplicationContext()); 

    //WRITE 
    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
    fab.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      final EditText taskEditText = new EditText(MainActivity.this); 
      AlertDialog dialog = new AlertDialog.Builder(MainActivity.this) 
        .setTitle("Add a new task") 
        .setMessage("What do you want to do next?") 
        .setView(taskEditText) 
        .setPositiveButton("Add", new DialogInterface.OnClickListener() { 
         @Override 
         public void onClick(DialogInterface dialog, int which) { 

          String task = String.valueOf(taskEditText.getText()); 
          realm.beginTransaction(); 
          Person person=realm.createObject(Person.class); 
          person.setName(task); 
          Toast.makeText(getApplicationContext(),"ADDED",Toast.LENGTH_SHORT).show(); 
          realm.commitTransaction(); 
         } 
        }) 
        .setNegativeButton("Cancel", null) 
        .create(); 
      dialog.show(); 
     } 
    }); 

    //READ 
    btn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      // Execute the query: 
      RealmResults<Person> results = realm.where(Person.class).findAll(); 
      String name=results.toString(); 
      Toast.makeText(getApplicationContext(),name,Toast.LENGTH_SHORT).show(); 
     } 
    }); 
} 

@Override 
protected void onDestroy(){ 
    super.onDestroy(); 
    realm.close(); 
    } 
} 

です。このように見えるはずです。

RealmConfiguration config = new RealmConfiguration.Builder(context) 
    .name("myrealm.realm") 
    .build(); 
Realm realm = Realm.getInstance(config); 
+0

であることを確信しています。レルム、私はこれに新しいです、ちょうどトーストを取得して表示します。それは非常に役に立つでしょう –

0

あなたは少なくともRealm 1.0.0に更新する必要がありますが、最新の(執筆時点ではRealm 1.1.1です)。

Realm.getInstance(Context)は、遅くとも確実に削除されました。0.91.0です。

は、レルムの最新バージョンを使用するには、プロジェクト・レベルのbuild.gradleに

buildscript { 
    repositories { 
     jcenter() 
    } 
    dependencies { 
     classpath "io.realm:realm-gradle-plugin:1.1.1" //this line 
    } 
} 

これを追加し、AndroidのメーカーとのGradleを使用する必要があり、また、あなたはモジュール - でrealm-androidのGradleプラグインを適用する必要がありますレベルビルド:

apply plugin: 'com.android.application' 
apply plugin: 'realm-android' // this line 

古いバージョンのエラーについてはあまり意味がありません。おそらく一年前のように修正されたでしょう。

EDIT:

//READ 
btn.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     // Execute the query: 
     RealmResults<Person> results = realm.where(Person.class).findAll(); 
     if(!results.isEmpty()) { 
      Person person = results.get(0); 
      String name = person.getName(); 
      Toast.makeText(MainActivity.this, name, Toast.LENGTH_SHORT).show(); 
     }    
    } 
}); 
+0

ありがとう、私は、領域からデータを取得する方法を助けてください、私はこれに新しいです、ちょうどトーストを取得し、表示する。それは非常に役に立つでしょう –

+0

古いバージョンであるので、私は古いバージョンを助けることができません。私はそれがどんなバージョンであるか分からない。 – EpicPandaForce

+0

私はちょうど新しい依存関係を追加しました、あなたはこのバージョンを教えてください! –

関連する問題