###前提・実現したいこと
前回、「Realmを使ってリストビューを表示することができない」という内容で質問させて頂きアドバイスのおかげで自己解決したと思ったのですが、実機でテストをすると
Java
1realm = Realm.getDefaultInstance();
この場所で「RealmMigrationNeededException」というエラーが発生して前に進めない状況です。
エラー文で検索して解決策を探してみましたが難しくて理解できず。
よろしければアドバイスよろしくお願いします。
###発生している問題・エラーメッセージ
Caused by: io.realm.exceptions.RealmMigrationNeededException: RealmMigration must be provided at io.realm.BaseRealm.migrateRealm(BaseRealm.java:741) at io.realm.Realm.migrateRealm(Realm.java:1331) at io.realm.Realm.migrateRealm(Realm.java:1318) at io.realm.Realm.createInstance(Realm.java:227) at io.realm.RealmCache.createRealmOrGetFromCache(RealmCache.java:126) at io.realm.Realm.getDefaultInstance(Realm.java:166) at com.example.oubeika.tsumegonomori.ProblemList.onCreate(ProblemList.java:52) at android.app.Activity.performCreate(Activity.java:5245) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2179) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2292) at android.app.ActivityThread.access$800(ActivityThread.java:149) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1218) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:136) at android.app.ActivityThread.main(ActivityThread.java:5265) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:515) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:823) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:639) at dalvik.system.NativeStart.main(Native Method)
###該当のソースコード
ProblemList.java
Java
1public class ProblemList extends AppCompatActivity { 2 3 public static final String EXTRA_GODATA = "com.example.oubeika.tsumegonomori.GoData"; 4 5 private Realm realm; 6 private RealmResults<GoData> results; 7 private RealmChangeListener realmListener = new RealmChangeListener() { 8 9 @Override 10 public void onChange(Object element) { 11 reloadListView(); 12 } 13 }; 14 15 private ListView listView; 16 private GoDataAdapter adapter; 17 18 @Override 19 protected void onCreate(@Nullable Bundle savedInstanceState) { 20 super.onCreate(savedInstanceState); 21 setContentView(R.layout.problem_list); 22 23 //Realmの設定 24 realm = Realm.getDefaultInstance(); 25 realm.addChangeListener(realmListener); 26 27 //ListViewの設定 28 listView = (ListView) findViewById(R.id.listView1); 29 30 if (adapter == null) { 31 try { 32 results = loadGoData(); 33 } catch (IOException e) { 34 e.printStackTrace(); 35 } 36 37 adapter = new GoDataAdapter(ProblemList.this); 38 adapter.setGoData(results); 39 40 //ListViewに表示 41 listView.setAdapter(adapter); 42 adapter.notifyDataSetChanged(); 43 44 addGoData(); 45 46 reloadListView(); 47 } 48 49 //ListViewをタップしたときの処理 50 listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 51 @Override 52 public void onItemClick(AdapterView<?> parent, View view, int pos, long id) { 53 54 GoData goData = (GoData) parent.getAdapter().getItem(pos); 55 56 Intent intent = new Intent(ProblemList.this, Problem.class); 57 intent.putExtra(EXTRA_GODATA, goData); 58 59 startActivity(intent); 60 } 61 }); 62 } 63 64 @Override 65 protected void onDestroy() { 66 super.onDestroy(); 67 68 realm.close(); 69 } 70 71 private RealmResults<GoData> loadGoData() throws IOException { 72 73 BufferedReader br; 74 String json = ""; 75 76 InputStream is = getAssets().open("sgfdata.json"); 77 78 //realm.beginTransaction(); 79 try { 80 // ファイルの読み込み 81 br = new BufferedReader((new InputStreamReader(is))); 82 String s; 83 while ((s = br.readLine()) != null) { 84 json += s; 85 } 86 Log.d(TAG, json); 87 88 JSONObject jsonObject = new JSONObject(json); 89 90 // 問題データ追加 91 //JSONArray easy = problems.getJSONArray("easy"); 92 ZahyoChanger changer = new ZahyoChanger(); 93 JSONArray normal_problem = jsonObject.getJSONObject("problems").getJSONArray("normal"); 94 for (int i = 0; i < normal_problem.length(); i++) { 95 String value1 = normal_problem.getString(i); 96 changer.GoDataSeparate(value1); 97 Log.d(TAG, "value1は " + value1 + " です!"); 98 } 99 //答えデータ追加 100 //JSONArray easy_answers = answers.getJSONArray("easy"); 101 JSONArray normal_answers = jsonObject.getJSONObject("answers").getJSONArray("normal"); 102 for (int j = 0; j < normal_answers.length(); j++) { 103 String value2 = normal_answers.getString(j); 104 changer.GoDataSeparate(value2); 105 Log.d(TAG, "value2は " + value2 + " です!"); 106 } 107 // realm.commitTransaction(); 108 } catch (IOException | JSONException e) { 109 e.printStackTrace(); 110 // realm.cancelTransaction(); 111 } finally { 112 if (is != null) { 113 is.close(); 114 } 115 } 116 return realm.where(GoData.class).findAll(); 117 } 118 119 private void reloadListView() { 120 121 ArrayList<GoData> goDataArrayList = new ArrayList<>(); 122 123 for (int i = 0; i < results.size(); i++) { 124 Log.d(TAG, String.valueOf(results.size())); 125 126 GoData data = new GoData(); 127 128 data.setId(results.get(i).getId()); 129 data.setQNum(results.get(i).getQNum()); 130 data.setLevel(results.get(i).getLevel()); 131 132 goDataArrayList.add(data); 133 } 134 135 //adapter = new GoDataAdapter(this); 136 adapter.setGoData(goDataArrayList); 137 listView.setAdapter(adapter); 138 adapter.notifyDataSetChanged(); 139 } 140 141 private void addGoData() { 142 143 GoData data = new GoData(); 144 145 for (int j = 0; j < results.size(); j++) { 146 147 data.setId(results.get(j).getId()); 148 data.setQNum(results.get(j).getQNum()); 149 data.setTeban(results.get(j).getTeban()); 150 data.setLevel(results.get(j).getLevel()); 151 152 data.setColP(results.get(j).getColP()); 153 data.setRowP(results.get(j).getRowP()); 154 data.setStoneColorP(results.get(j).getStoneColorP()); 155 data.setColA(results.get(j).getColA()); 156 data.setRowA(results.get(j).getRowA()); 157 data.setStoneColorA(results.get(j).getStoneColorA()); 158 } 159 realm.beginTransaction(); 160 realm.copyToRealmOrUpdate(data); 161 realm.commitTransaction(); 162 } 163}
###補足情報(言語/FW/ツール等のバージョンなど)
言語:Java
開発環境:androidstudio2.2.2
実機OS:android4.4.4
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/10/23 12:27