2011-12-23 9 views
0

2つの異なるパッケージに同じ名前の2つのアクティビティがあります。 1つは別のクラスのサブクラスです。私はデバイスに応じて、2つの異なるテーマを使用するためにこれを行います。 (大画面のデバイスではTheme.Dialogを使用し、他のクラスでは定期的に使用します。)継承されたクラスは、onCreateをオーバーライドしてsuperメソッドを呼び出し、いくつかのウィンドウフラグを設定します。Activity.onCreateのStackOverflowError

これは私のすべてのデバイスでうまく動作しますが、私は非常に奇妙なクラッシュレポートをいくつか取得します。

java.lang.StackOverflowError 
    at *****.activities.Register.onCreate(SourceFile) 
    at *****.tablet.Register.onCreateRegister(SourceFile) 
    (a lot of repeats) 
    at *****.activities.Register.onCreate(SourceFile) 
    at *****.tablet.Register.onCreateRegister(SourceFile) 
    at *****.activities.Register.onCreate(SourceFile) 
    at *****.tablet.Register.onCreateRegister(SourceFile) 
    at *****.tablet.Register.onCreate(SourceFile) 
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663) 
    at android.app.ActivityThread.access$1500(ActivityThread.java:117) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) 
    at android.os.Handler.dispatchMessage(Handler.java:99) 
    at android.os.Looper.loop(Looper.java:130) 
    at android.app.ActivityThread.main(ActivityThread.java:3683) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:507) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:850) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:608) 
    at dalvik.system.NativeStart.main(Native Method) 

私はので、私はそれが内部名だと仮定し、私はわからないonCreateRegisterを作成しませんでした。 ProGuardを使用しますが、再帰呼び出しが自分のコードである場合は、行番号が表示されるはずです。

私のデバイスでそれを複製することはできません。すでにテストしたモデルと同じモデルからでもこのレポートを受け取ることができるため、デバイス固有の問題ではないでしょう。

これがなぜ起こっているのか誰にも分かりませんが、これを処理するにはより良い方法がありますか?

答えて

0

親クラスと子クラスが同じ名前にならないようにクラスの名前を変更しましたが、問題を解決したようです。

0

にStackOverflowError:私はあなたのコードを見ていないので、その情報に行くためにあなたを伝えるためにどこ

Thrown when the depth of the stack of the running program exceeds some platform or VM specific limit. Typically, this will occur only when a program becomes infinitely recursive, but it can also occur in correctly written (but deeply recursive) programs.

知ってはいけません。しかし、それは本当にあなたのせいではないAndroid/Javaエラーであるか、またはあなたが正しく実行するのに失敗した再帰的なものがあるかもしれません。

関連する問題