4

私のAndroidアプリは、タブホストを初期化するとクラッシュします.しかし、ユーザーからのクラッシュログはかなり奇妙です!

クラッシュのほとんどは Android 2.3.x で発生しましたが、Android 4.x では問題なく動作します。

「setImageResource」を呼び出すと、コードが無限再帰に陥ったことがわかりますが、その理由はわかりません。コード:

    View tabIndicator = LayoutInflater.from(this).inflate(R.layout.tab_indicator, getTabWidget(), false);   
    ImageView アイコン = (ImageView) tabIndicator.findViewById(R.id.icon);
    icon.setImageResource(drawableId); // クラッシュした
    java.lang.StackOverflowError
at android.graphics.drawable.StateListDrawable$StateListState.<init>(StateListDrawable.java:257)
at android.graphics.drawable.StateListDrawable.<init>(StateListDrawable.java:303)
at android.graphics.drawable.StateListDrawable.<init>(StateListDrawable.java:70)
at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:787)
at android.graphics.drawable.Drawable.createFromXml(Drawable.java:728)
at android.content.res.Resources.loadDrawable(Resources.java:1712)
at android.content.res.Resources.getDrawable(Resources.java:590)
at android.graphics.drawable.StateListDrawable.inflate(StateListDrawable.java:162)
at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:787)
at android.graphics.drawable.Drawable.createFromXml(Drawable.java:728)
at android.content.res.Resources.loadDrawable(Resources.java:1712)
at android.content.res.Resources.getDrawable(Resources.java:590)
at android.graphics.drawable.StateListDrawable.inflate(StateListDrawable.java:162)
at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:787)
at android.graphics.drawable.Drawable.createFromXml(Drawable.java:728)
at android.content.res.Resources.loadDrawable(Resources.java:1712)
at android.content.res.Resources.getDrawable(Resources.java:590)
at android.graphics.drawable.StateListDrawable.inflate(StateListDrawable.java:162)
at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:787)
at android.graphics.drawable.Drawable.createFromXml(Drawable.java:728)
at android.content.res.Resources.loadDrawable(Resources.java:1712)
at android.content.res.Resources.getDrawable(Resources.java:590)
at android.graphics.drawable.StateListDrawable.inflate(StateListDrawable.java:162)
at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:787)
at android.graphics.drawable.Drawable.createFromXml(Drawable.java:728)
at android.content.res.Resources.loadDrawable(Resources.java:1712)
at android.content.res.Resources.getDrawable(Resources.java:590)
at android.graphics.drawable.StateListDrawable.inflate(StateListDrawable.java:162)
at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:787)
at android.graphics.drawable.Drawable.createFromXml(Drawable.java:728)
at android.content.res.Resources.loadDrawable(Resources.java:1712)
at android.content.res.Resources.getDrawable(Resources.java:590)
at android.graphics.drawable.StateListDrawable.inflate(StateListDrawable.java:162)
at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:787)
at android.graphics.drawable.Drawable.createFromXml(Drawable.java:728)
at android.content.res.Resources.loadDrawable(Resources.java:1712)
at android.content.res.Resources.getDrawable(Resources.java:590)
at android.graphics.drawable.StateListDrawable.inflate(StateListDrawable.java:162)
at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:787)
at android.graphics.drawable.Drawable.createFromXml(Drawable.java:728)
at android.content.res.Resources.loadDrawable(Resources.java:1712)
at android.content.res.Resources.getDrawable(Resources.java:590)
at android.graphics.drawable.StateListDrawable.inflate(StateListDrawable.java:162)
at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:787)
at android.graphics.drawable.Drawable.createFromXml(Drawable.java:728)
at android.content.res.Resources.loadDrawable(Resources.java:1712)
at android.content.res.Resources.getDrawable(Resources.java:590)
at android.graphics.drawable.StateListDrawable.inflate(StateListDrawable.java:162)
at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:787)
at android.graphics.drawable.Drawable.createFromXml(Drawable.java:728)
at android.content.res.Resources.loadDrawable(Resources.java:1712)
at android.content.res.Resources.getDrawable(Resources.java:590)
at android.widget.ImageView.resolveUri(ImageView.java:564)
at android.widget.ImageView.setImageResource(ImageView.java:280)
at com.thankcreate.care.MainActivity.addTab(MainActivity.java:95)
at com.thankcreate.care.MainActivity.setTabs(MainActivity.java:78)
at com.thankcreate.care.MainActivity.onCreate(MainActivity.java:36)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1072)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1794)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1851)
at android.app.ActivityThread.access$1500(ActivityThread.java:132)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1038)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:143)
at android.app.ActivityThread.main(ActivityThread.java:4277)
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:839)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
at dalvik.system.NativeStart.main(Native Method)
4

1 に答える 1

3

This is caused by an infinite loop executing. This may be caused by the a circular call in the drawable that is used as your icon. The Drawable with the specified drawableId may be calling a second drawable and the second drawable which n turn calls the first one.

Provide more details about the drawable that you are using.That may help in providing better answers.

于 2013-01-10T07:14:01.553 に答える