Java 膨胀ActionBar时的NPE旧机器人上的Sherlock

Java 膨胀ActionBar时的NPE旧机器人上的Sherlock,java,android,actionbarsherlock,Java,Android,Actionbarsherlock,我正在使用ActionBarSherlock,遇到了一个可怕的问题: 01-08 22:16:05.803: E/AndroidRuntime(432): java.lang.RuntimeException: Unable to start activity ComponentInfo{ar.android.app.glarm/ar.android.app.glarm.gui.GLarmMain}: android.view.InflateException: Binary XML file

我正在使用ActionBarSherlock,遇到了一个可怕的问题:

01-08 22:16:05.803: E/AndroidRuntime(432): java.lang.RuntimeException: Unable to start activity ComponentInfo{ar.android.app.glarm/ar.android.app.glarm.gui.GLarmMain}: android.view.InflateException: Binary XML file line #32: Error inflating class com.actionbarsherlock.internal.widget.ActionBarView
01-08 22:16:05.803: E/AndroidRuntime(432):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1736)
[CUT]
01-08 22:16:05.803: E/AndroidRuntime(432): Caused by: android.view.InflateException: Binary XML file line #32: Error inflating class com.actionbarsherlock.internal.widget.ActionBarView
01-08 22:16:05.803: E/AndroidRuntime(432):  at android.view.LayoutInflater.createView(LayoutInflater.java:596)
01-08 22:16:05.803: E/AndroidRuntime(432):  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:671)
01-08 22:16:05.803: E/AndroidRuntime(432):  at android.view.LayoutInflater.rInflate(LayoutInflater.java:724)
01-08 22:16:05.803: E/AndroidRuntime(432):  at android.view.LayoutInflater.rInflate(LayoutInflater.java:727)
01-08 22:16:05.803: E/AndroidRuntime(432):  at android.view.LayoutInflater.inflate(LayoutInflater.java:479)
01-08 22:16:05.803: E/AndroidRuntime(432):  at android.view.LayoutInflater.inflate(LayoutInflater.java:391)
01-08 22:16:05.803: E/AndroidRuntime(432):  at android.view.LayoutInflater.inflate(LayoutInflater.java:347)
01-08 22:16:05.803: E/AndroidRuntime(432):  at com.actionbarsherlock.internal.ActionBarSherlockCompat.generateLayout(ActionBarSherlockCompat.java:1010)
01-08 22:16:05.803: E/AndroidRuntime(432):  at com.actionbarsherlock.internal.ActionBarSherlockCompat.installDecor(ActionBarSherlockCompat.java:902)
01-08 22:16:05.803: E/AndroidRuntime(432):  at com.actionbarsherlock.internal.ActionBarSherlockCompat.setContentView(ActionBarSherlockCompat.java:855)
01-08 22:16:05.803: E/AndroidRuntime(432):  at com.actionbarsherlock.ActionBarSherlock.setContentView(ActionBarSherlock.java:672)
01-08 22:16:05.803: E/AndroidRuntime(432):  at com.actionbarsherlock.app.SherlockListActivity.setContentView(SherlockListActivity.java:239)
01-08 22:16:05.803: E/AndroidRuntime(432):  at ar.android.app.glarm.gui.GLarmMain.onCreate(GLarmMain.java:117)
01-08 22:16:05.803: E/AndroidRuntime(432):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1048)
01-08 22:16:05.803: E/AndroidRuntime(432):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1700)
01-08 22:16:05.803: E/AndroidRuntime(432):  ... 11 more
01-08 22:16:05.803: E/AndroidRuntime(432): Caused by: java.lang.reflect.InvocationTargetException
01-08 22:16:05.803: E/AndroidRuntime(432):  at java.lang.reflect.Constructor.constructNative(Native Method)
01-08 22:16:05.803: E/AndroidRuntime(432):  at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
01-08 22:16:05.803: E/AndroidRuntime(432):  at android.view.LayoutInflater.createView(LayoutInflater.java:576)
01-08 22:16:05.803: E/AndroidRuntime(432):  ... 25 more
01-08 22:16:05.803: E/AndroidRuntime(432): Caused by: java.lang.NullPointerException
01-08 22:16:05.803: E/AndroidRuntime(432):  at com.actionbarsherlock.internal.widget.ActionBarView$HomeView.setUp(ActionBarView.java:1219)
01-08 22:16:05.803: E/AndroidRuntime(432):  at com.actionbarsherlock.internal.widget.ActionBarView.<init>(ActionBarView.java:231)
01-08 22:16:05.803: E/AndroidRuntime(432):  ... 28 more
当然,随后的调用将返回NPE。我的日志中似乎也有一些警告:

01-08 22:54:20.093: I/dalvikvm(626): Could not find method com.actionbarsherlock.internal.nineoldandroids.widget.NineFrameLayout.onHoverEvent, referenced from method com.actionbarsherlock.internal.widget.ActionBarContainer.onHoverEvent
01-08 22:54:20.093: W/dalvikvm(626): VFY: unable to resolve virtual method 8116: Lcom/actionbarsherlock/internal/nineoldandroids/widget/NineFrameLayout;.onHoverEvent (Landroid/view/MotionEvent;)Z
01-08 22:54:20.093: D/dalvikvm(626): VFY: replacing opcode 0x6f at 0x0000
01-08 22:54:49.864: I/dalvikvm(626): Could not find method com.actionbarsherlock.internal.widget.ActionBarView$HomeView.onHoverEvent, referenced from method com.actionbarsherlock.internal.widget.ActionBarView$HomeView.dispatchHoverEvent
01-08 22:54:49.864: W/dalvikvm(626): VFY: unable to resolve virtual method 8980: Lcom/actionbarsherlock/internal/widget/ActionBarView$HomeView;.onHoverEvent (Landroid/view/MotionEvent;)Z
01-08 22:54:49.864: D/dalvikvm(626): VFY: replacing opcode 0x6e at 0x0000
01-08 22:54:49.864: I/dalvikvm(626): Could not find method android.widget.FrameLayout.onPopulateAccessibilityEvent, referenced from method com.actionbarsherlock.internal.widget.ActionBarView$HomeView.onPopulateAccessibilityEvent
01-08 22:54:49.864: W/dalvikvm(626): VFY: unable to resolve virtual method 5731: Landroid/widget/FrameLayout;.onPopulateAccessibilityEvent (Landroid/view/accessibility/AccessibilityEvent;)V
01-08 22:54:49.864: D/dalvikvm(626): VFY: replacing opcode 0x6f at 0x0006
我有什么问题

注:我使用Eclipse+Maven,包括android-v4支持19.0.1和NineodelDroids 2.4.0

编辑

在其他一些调试之后,ActionBarSherlock和Maven生成的R.txt目标/文件夹中生成的资源号看起来不一样。 签入调试器时,我有:

R.txt -> int layout abs__action_bar_home 0x7f030000 | Debug -> same
R.txt -> int id abs__up 0x7f07000b | Debug -> ox7f04000b
R.txt -> int id abs__home 0x7f07000a | Debug -> 0x7f04000a
更新

导入apklibs时似乎出现问题…R编译出现问题。 解决方法是删除使abs__*one的ID不对齐的自定义资源,并弄乱编号。例如,我做了以下工作:

我检查了ActionBarSherlock失败的地方,对我来说是在加载资源R.id.abs\u时。 我从R.java文件中获得了资源编号,并记下它0x7f07XXXX; 我删除了0x7f07XXXX之前的所有资源,清理了项目,重新生成了R。我想将R.id.abs_u与它的apklib编号0x7f04000b对齐。我必须从字符串xml中删除三个文件夹anim/、xml/、raw/和三个实际资源。 现在,R.id.abs\u\up在我编译的R.java中有了正确的数字。
请参阅讨论。

我不确定这是否相关,但ABS中是否捆绑了支持库?为什么你又把它包括在你的项目中?是的,它是捆绑的,ABS实际上在Maven构建时带来了它,因此m2e Eclipse插件也有一个相关的问题。我不得不将其从ABS中排除,并将其包括在内,因为这一点。不管怎样,我试着从原始的Maven依赖项中包含它,但没有成功。
R.txt -> int layout abs__action_bar_home 0x7f030000 | Debug -> same
R.txt -> int id abs__up 0x7f07000b | Debug -> ox7f04000b
R.txt -> int id abs__home 0x7f07000a | Debug -> 0x7f04000a