2012-08-30 22 views
0

我收到了一个“java.lang.StackOverflowError”错误。上下文StackOverflowError

这是代码:

08-30 10:34:49.528: E/AndroidRuntime(22897): FATAL EXCEPTION: main 
08-30 10:34:49.528: E/AndroidRuntime(22897): java.lang.StackOverflowError 
08-30 10:34:49.528: E/AndroidRuntime(22897): at com.silm.database.ApprovedNotifications.<init>(ApprovedNotifications.java:27) 
08-30 10:34:49.528: E/AndroidRuntime(22897): at com.silm.database.RejectedNotifications.<init>(RejectedNotifications.java:27) 
08-30 10:34:49.528: E/AndroidRuntime(22897): at com.silm.database.ApprovedNotifications.<init>(ApprovedNotifications.java:28) 
08-30 10:34:49.528: E/AndroidRuntime(22897): at com.silm.database.RejectedNotifications.<init>(RejectedNotifications.java:27) 
08-30 10:34:49.528: E/AndroidRuntime(22897): at com.silm.database.ApprovedNotifications.<init>(ApprovedNotifications.java:28) 
08-30 10:34:49.528: E/AndroidRuntime(22897): at com.silm.database.RejectedNotifications.<init>(RejectedNotifications.java:27) 
08-30 10:34:49.528: E/AndroidRuntime(22897): at com.silm.database.ApprovedNotifications.<init>(ApprovedNotifications.java:28) 
08-30 10:34:49.528: E/AndroidRuntime(22897): at com.silm.database.RejectedNotifications.<init>(RejectedNotifications.java:27) 
08-30 10:34:49.528: E/AndroidRuntime(22897): at com.silm.database.ApprovedNotifications.<init>(ApprovedNotifications.java:28) 
08-30 10:34:49.528: E/AndroidRuntime(22897): at com.silm.database.RejectedNotifications.<init>(RejectedNotifications.java:27) 
08-30 10:34:49.528: E/AndroidRuntime(22897): at com.silm.database.ApprovedNotifications.<init>(ApprovedNotifications.java:28) 
08-30 10:34:49.528: E/AndroidRuntime(22897): at com.silm.database.RejectedNotifications.<init>(RejectedNotifications.java:27) 
08-30 10:34:49.528: E/AndroidRuntime(22897): at com.silm.database.ApprovedNotifications.<init>(ApprovedNotifications.java:28) 
08-30 10:34:49.528: E/AndroidRuntime(22897): at com.silm.database.RejectedNotifications.<init>(RejectedNotifications.java:27) 
08-30 10:34:49.528: E/AndroidRuntime(22897): at com.silm.database.ApprovedNotifications.<init>(ApprovedNotifications.java:28) 
08-30 10:34:49.528: E/AndroidRuntime(22897): at com.silm.database.RejectedNotifications.<init>(RejectedNotifications.java:27) 
08-30 10:34:49.528: E/AndroidRuntime(22897): at com.silm.database.ApprovedNotifications.<init>(ApprovedNotifications.java:28) 
08-30 10:34:49.528: E/AndroidRuntime(22897): at com.silm.database.RejectedNotifications.<init>(RejectedNotifications.java:27) 
08-30 10:34:49.528: E/AndroidRuntime(22897): at com.silm.database.ApprovedNotifications.<init>(ApprovedNotifications.java:28) 
08-30 10:34:49.528: E/AndroidRuntime(22897): at com.silm.database.RejectedNotifications.<init>(RejectedNotifications.java:27) 
08-30 10:34:49.528: E/AndroidRuntime(22897): at com.silm.database.ApprovedNotifications.<init>(ApprovedNotifications.java:28) 
08-30 10:34:49.528: E/AndroidRuntime(22897): at com.silm.database.RejectedNotifications.<init>(RejectedNotifications.java:27) 
08-30 10:34:49.528: E/AndroidRuntime(22897): at com.silm.database.ApprovedNotifications.<init>(ApprovedNotifications.java:28) 
08-30 10:34:49.528: E/AndroidRuntime(22897): at com.silm.database.RejectedNotifications.<init>(RejectedNotifications.java:27) 
08-30 10:34:49.528: E/AndroidRuntime(22897): at com.silm.database.ApprovedNotifications.<init>(ApprovedNotifications.java:28) 
08-30 10:34:49.528: E/AndroidRuntime(22897): at com.silm.database.RejectedNotifications.<init>(RejectedNotifications.java:27) 
08-30 10:34:49.528: E/AndroidRuntime(22897): at com.silm.database.ApprovedNotifications.<init>(ApprovedNotifications.java:28) 
08-30 10:34:49.528: E/AndroidRuntime(22897): at com.silm.database.RejectedNotifications.<init>(RejectedNotifications.java:27) 
08-30 10:34:49.528: E/AndroidRuntime(22897): at com.silm.database.ApprovedNotifications.<init>(ApprovedNotifications.java:28) 
08-30 10:34:49.528: E/AndroidRuntime(22897): at com.silm.database.RejectedNotifications.<init>(RejectedNotifications.java:27) 
08-30 10:34:49.528: E/AndroidRuntime(22897): at com.silm.database.ApprovedNotifications.<init>(ApprovedNotifications.java:28) 
08-30 10:34:49.528: E/AndroidRuntime(22897): at com.silm.database.RejectedNotifications.<init>(RejectedNotifications.java:27) 
08-30 10:34:49.528: E/AndroidRuntime(22897): at com.silm.database.ApprovedNotifications.<init>(ApprovedNotifications.java:28) 
08-30 10:34:49.528: E/AndroidRuntime(22897): at com.silm.database.RejectedNotifications.<init>(RejectedNotifications.java:27) 
08-30 10:34:49.528: E/AndroidRuntime(22897): at com.silm.database.ApprovedNotifications.<init>(ApprovedNotifications.java:28) 
08-30 10:34:49.528: E/AndroidRuntime(22897): at com.silm.database.RejectedNotifications.<init>(RejectedNotifications.java:27) 
08-30 10:34:49.528: E/AndroidRuntime(22897): at com.silm.database.ApprovedNotifications.<init>(ApprovedNotifications.java:28) 
08-30 10:34:49.528: E/AndroidRuntime(22897): at com.silm.database.RejectedNotifications.<init>(RejectedNotifications.java:27) 
08-30 10:34:49.528: E/AndroidRuntime(22897): at com.silm.database.ApprovedNotifications.<init>(ApprovedNotifications.java:28) 
08-30 10:34:49.528: E/AndroidRuntime(22897): at com.silm.database.RejectedNotifications.<init>(RejectedNotifications.java:27) 
08-30 10:34:49.528: E/AndroidRuntime(22897): at com.silm.database.ApprovedNotifications.<init>(ApprovedNotifications.java:28) 
08-30 10:34:49.528: E/AndroidRuntime(22897): at com.silm.database.RejectedNotifications.<init>(RejectedNotifications.java:27) 
08-30 10:34:49.528: E/AndroidRuntime(22897): at com.silm.database.ApprovedNotifications.<init>(ApprovedNotifications.java:28) 
08-30 10:34:49.528: E/AndroidRuntime(22897): at com.silm.database.RejectedNotifications.<init>(RejectedNotifications.java:27) 
08-30 10:34:49.528: E/AndroidRuntime(22897): at com.silm.database.ApprovedNotifications.<init>(ApprovedNotifications.java:28) 
08-30 10:34:49.528: E/AndroidRuntime(22897): at com.silm.database.RejectedNotifications.<init>(RejectedNotifications.java:27) 
08-30 10:34:49.528: E/AndroidRuntime(22897): at com.silm.database.ApprovedNotifications.<init>(ApprovedNotifications.java:28) 
08-30 10:34:49.528: E/AndroidRuntime(22897): at com.silm.database.RejectedNotifications.<init>(RejectedNotifications.java:27) 
08-30 10:34:49.528: E/AndroidRuntime(22897): at com.silm.database.ApprovedNotifications.<init>(ApprovedNotifications 

有关项目:

为什么我想做的事:

我想点击一个确认按钮来保存通知/消息给批准的通知/消息数据库。但我注意到当我点击Aprrove按钮时,它被插入,当点击Rejected按钮时,它也被插入到Rejected表中。因此,我检查是否不在被拒绝的表中,然后将其插入批准表。所有工作都很好,但是当我做同样的事情(从批准中删除通知并插入拒绝),然后我得到了StackOverFlow错误。

这里是代码生成错误:

public RejectedNotifications(Context context) { 
     super(context, TABLE_NAME_REJECTED_NOTIFICATION, null, DATABASE_VERSION); 
     ***approved = new ApprovedNotifications(context);*** 
    } 

的核准表中的其他数据库处理程序是一样的有关代码:

public ApprovedNotifications(Context context) { 
     super(context, TABLE_NAME_APPROVED_NOTIFICATION, null, DATABASE_VERSION); 
     rejected = new RejectedNotifications(context); 
    } 
+1

你显然有一些无尽的调用循环 – fiddler

回答

1

你有一个非常清晰的无限递归。 ApprovedNotifications的构造函数创建一个新的RejectedNotificationsRejectedNotifications构造函数创建一个新的ApprovedNotifications,依此类推。

3

你已经在你的代码中创建一个无限循环。每创建一个ApprovedNoficiations实例,它将创建一个RejectedNotifications实例,然后创建另一个ApprovedNotifications实例,依此类推...

这两个类之间的关系是循环的。如果你想让两个实例互相引用,你可能需要先创建一个实例,然后将其作为参数传递给第二个实例。

+0

谢谢,这就是问题所在。 –