2012-08-30 38 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

謝謝,這就是問題所在。 –