我想在我的服务类中使用数据库,但我的应用程序崩溃了 我不知道为什么 我的数据库在另一个活动中运行良好 我认为这是因为我的共谋
08-13 11:54:18.244: E/jdwp(2898): Failed sending reply to debugger: Broken pipe
08-13 11:54:18.540: E/AndroidRuntime(2927): FATAL EXCEPTION: main
08-13 11:54:18.540: E/AndroidRuntime(2927): java.lang.RuntimeException: Unable to create service arad.faleroozane.MyService: java.lang.ArrayIndexOutOfBoundsException: length=0; index=-1
08-13 11:54:18.540: E/AndroidRuntime(2927): at android.app.ActivityThread.handleCreateService(ActivityThread.java:2539)
08-13 11:54:18.540: E/AndroidRuntime(2927): at android.app.ActivityThread.access$1600(ActivityThread.java:141)
08-13 11:54:18.540: E/AndroidRuntime(2927): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1316)
08-13 11:54:18.540: E/AndroidRuntime(2927): at android.os.Handler.dispatchMessage(Handler.java:99)
08-13 11:54:18.540: E/AndroidRuntime(2927): at android.os.Looper.loop(Looper.java:137)
08-13 11:54:18.540: E/AndroidRuntime(2927): at android.app.ActivityThread.main(ActivityThread.java:5041)
08-13 11:54:18.540: E/AndroidRuntime(2927): at java.lang.reflect.Method.invokeNative(Native Method)
08-13 11:54:18.540: E/AndroidRuntime(2927): at java.lang.reflect.Method.invoke(Method.java:511)
08-13 11:54:18.540: E/AndroidRuntime(2927): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
08-13 11:54:18.540: E/AndroidRuntime(2927): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
08-13 11:54:18.540: E/AndroidRuntime(2927): at dalvik.system.NativeStart.main(Native Method)
08-13 11:54:18.540: E/AndroidRuntime(2927): Caused by: java.lang.ArrayIndexOutOfBoundsException: length=0; index=-1
08-13 11:54:18.540: E/AndroidRuntime(2927): at java.util.ArrayList.get(ArrayList.java:306)
08-13 11:54:18.540: E/AndroidRuntime(2927): at arad.faleroozane.Database.showfal(Database.java:161)
08-13 11:54:18.540: E/AndroidRuntime(2927): at arad.faleroozane.MyService.onCreate(MyService.java:70)
08-13 11:54:18.540: E/AndroidRuntime(2927): at android.app.ActivityThread.handleCreateService(ActivityThread.java:2529)
08-13 11:54:18.540: E/AndroidRuntime(2927): ... 10 more
08-13 11:59:18.648: E/InputDispatcher(476): channel '534822c0 arad.faleroozane/arad.faleroozane.MainActivity (server)' ~ Channel is unrecoverably broken and will be disposed!
它是我在数据库类中的代码: 我的数组列表在其他活动中表现良好:
public void showfal() {
G.todaydate = new SimpleDateFormat("yyy-MM-dd").format(new Date());
String today = G.todaydate;
Cursor cu = mydb.rawQuery("SELECT * FROM fal WHERE startdate like '%" + today + "" + "%' order by id ", null);
while (cu != null && cu.moveToNext()) {
G.farvardin.add(cu.getString(cu.getColumnIndex("farvardin")) + "");
G.ordibehesht.add(cu.getString(cu.getColumnIndex("ordibehesht")) + "");
G.khordad.add(cu.getString(cu.getColumnIndex("khordad")) + "");
G.tir.add(cu.getString(cu.getColumnIndex("tir")) + "");
G.mordad.add(cu.getString(cu.getColumnIndex("mordad")) + "");
G.shahrivar.add(cu.getString(cu.getColumnIndex("shahrivar")) + "");
G.mehr.add(cu.getString(cu.getColumnIndex("mehr")) + "");
G.aban.add(cu.getString(cu.getColumnIndex("aban")) + "");
G.azar.add(cu.getString(cu.getColumnIndex("azar")) + "");
G.dey.add(cu.getString(cu.getColumnIndex("dey")) + "");
G.bahman.add(cu.getString(cu.getColumnIndex("bahman")) + "");
G.esfand.add(cu.getString(cu.getColumnIndex("esfand")) + "");
}
G.far = G.farvardin.get(G.farvardin.size() - 1);
G.ord = G.ordibehesht.get(G.ordibehesht.size() - 1);
G.kho = G.khordad.get(G.khordad.size() - 1);
G.tirr = G.tir.get(G.tir.size() - 1);
G.mor = G.mordad.get(G.mordad.size() - 1);
G.sha = G.shahrivar.get(G.shahrivar.size() - 1);
G.meh = G.mehr.get(G.mehr.size() - 1);
G.aba = G.aban.get(G.aban.size() - 1);
G.aza = G.azar.get(G.azar.size() - 1);
G.deyy = G.dey.get(G.dey.size() - 1);
G.bah = G.bahman.get(G.bahman.size() - 1);
G.esf = G.esfand.get(G.esfand.size() - 1);
cu.close();
}
答案 0 :(得分:0)
Hadi因为您还没有上传您的代码因此无法明确回答您的问题但是会尽力帮助您。
例外情况是,在您的服务中,您使用的是Array / ArrayList,并且您尝试访问的索引大于数组的大小。 异常告诉您的数组大小为0,索引为。
通过查看您的代码是您在线下的错误
G.far = G.farvardin.get(G.farvardin.size() - 1);
原因是 G.farvardin.size()的大小是0所以 0-1 = -1 这就是为什么你得到异常检查你的阵列。