GraphView
DataPoint[]
配列を含むライブラリコードを使用しています。 私のコードには、olddb
という名前のデータベースも含まれています。このデータベースは、以下のコードに配列の長さを挿入するために使用します。 最初の2つのfor
ループはデータベースの値を配列に追加するためのもので、3番目のforループは配列arrayWeight
とarrayId
から値を取得し、それらをDataPoint[]
配列に追加します。DataPoint配列に値を追加すると、実行中にアプリケーションがクラッシュする
プログラムを実行した後に何かが間違っているように見えますが、アプリケーションがクラッシュする原因を突き止めることができますか?ここで
private DataPoint[] getDataPoint() {
if (olddb.check()) {
List<oldDetails> details = olddb.getDetails();
double[] arrayWeight = new double[olddb.getDetailsCount()];
int[] arrayId = new int[olddb.getDetailsCount()];
for (oldDetails cn : details) { //Adding weights and id of all time to an array.
double num = cn.getWeight();
int id = cn.getId();
for (int i = arrayWeight.length; i > 0; i--) {
arrayWeight[i] = num;
arrayId[i] = id;
}
}
DataPoint[] dp = new DataPoint[olddb.getDetailsCount()];
for (int i = 0; i < arrayId.length; i++) {
for (int j = 0; j < arrayWeight.length; j++)
dp[i] = new DataPoint(i, arrayWeight[j]);
}
return dp;
}
else {
DataPoint[] dp = new DataPoint[]{
new DataPoint(0, 0)
};
return dp;
}
}
はDataPoint
、アレイの動作するコードの例です:
private DataPoint[] getDataPoint(){
DataPoint[] dp = new DataPoint[]{
new DataPoint(0,1),
new DataPoint(2,5),
new DataPoint(5,5),
new DataPoint(7,4)
};
return dp;
}
EDIT:ここ はエラーメッセージです:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.none.myapplication, PID: 3881
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.none.myapplication/com.none.myapplication.MainActivity}: java.lang.IllegalStateException: attempt to re-open an already-closed object: SQLiteQuery: SELECT * FROM oldDetails
それはクラッシュが何であるかLogCatであなたを教えてくれる、それを読むことを学びます:https://developer.android.com/studio/debug/am-logcat.html – Blundell
@Blundell最後にメッセージが見つかりましたhttps://codeshare.io/2EzBo5問題が何であるか分かりません –
'java .lang.IllegalStateException:既に閉じられているオブジェクトを再オープンしようとしました:SQLiteQuery:SELECT * FROM oldDetails'はエラーです。これは 'Databas eHandlerOld.getDetailsCount' line 141 – Blundell