Android - ResourceNotFoundException 和 NumberFormatException

Android - ResourceNotFoundException and NumberFormatException

我创建了一个应用程序,其中使用了 android.support.v4.widget.DrawerLayoutandroid.support.v7.widget.Toolbar

当我在 Samsung Tablet Neo(Android 版本 4.2.2)上 运行 此应用程序时,该应用程序 运行 完美运行。

但是当我在 Google Nexus 5(Android 版本 6.0.1)上 运行 相同的应用程序时,我得到 ResourceNotFoundException 并且应用程序崩溃了在我的 Java (Activity) 文件中以下代码的起始行。

应用程序在此行崩溃:setSupportActionBar(topToolBar);

FATAL EXCEPTION: main
rocess: com.myapp, PID: 11761
va.lang.RuntimeException: Unable to start activity ComponentInfo{com.myapp/com.myapp.MainActivityWithNavigationViewExpandableList}: android.content.res.Resources$NotFoundException: File res/color/abc_hint_foreground_material_dark.xml from color state list resource ID #0x7f0c00ab
  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416)
  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
  at android.app.ActivityThread.-wrap11(ActivityThread.java)
  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
  at android.os.Handler.dispatchMessage(Handler.java:102)
  at android.os.Looper.loop(Looper.java:148)
  at android.app.ActivityThread.main(ActivityThread.java:5417)
  at java.lang.reflect.Method.invoke(Native Method)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
aused by: android.content.res.Resources$NotFoundException: File res/color/abc_hint_foreground_material_dark.xml from color state list resource ID #0x7f0c00ab
  at android.content.res.Resources.loadColorStateListForCookie(Resources.java:2750)
  at android.content.res.Resources.loadColorStateList(Resources.java:2699)
  at android.content.res.TypedArray.getColorStateList(TypedArray.java:485)
  at android.widget.TextView.<init>(TextView.java:746)
  at android.widget.TextView.<init>(TextView.java:671)
  at android.support.v7.widget.AppCompatTextView.<init>(AppCompatTextView.java:62)
  at android.support.v7.widget.AppCompatTextView.<init>(AppCompatTextView.java:58)
  at android.support.v7.widget.AppCompatTextView.<init>(AppCompatTextView.java:54)
  at android.support.v7.widget.Toolbar.setTitle(Toolbar.java:756)
  at android.support.v7.widget.ToolbarWidgetWrapper.setTitleInt(ToolbarWidgetWrapper.java:261)
  at android.support.v7.widget.ToolbarWidgetWrapper.setWindowTitle(ToolbarWidgetWrapper.java:243)
  at android.support.v7.app.ToolbarActionBar.<init>(ToolbarActionBar.java:78)
  at android.support.v7.app.AppCompatDelegateImplV9.setSupportActionBar(AppCompatDelegateImplV9.java:223)
  at android.support.v7.app.AppCompatActivity.setSupportActionBar(AppCompatActivity.java:130)
  at com.myapp.MainActivityWithNavigationViewExpandableList.onCreate(MainActivityWithNavigationViewExpandableList.java:64)
  at android.app.Activity.performCreate(Activity.java:6251)
  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107)
  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369)
  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
  at android.app.ActivityThread.-wrap11(ActivityThread.java) 
  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
  at android.os.Handler.dispatchMessage(Handler.java:102) 
  at android.os.Looper.loop(Looper.java:148) 
  at android.app.ActivityThread.main(ActivityThread.java:5417) 
  at java.lang.reflect.Method.invoke(Native Method) 
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
aused by: java.lang.NumberFormatException: Invalid float: "0.70000005dip"
  at java.lang.StringToReal.invalidReal(StringToReal.java:63)
  at java.lang.StringToReal.initialParse(StringToReal.java:164)
  at java.lang.StringToReal.parseFloat(StringToReal.java:323)
  at java.lang.Float.parseFloat(Float.java:306)
  at android.content.res.TypedArray.getFloat(TypedArray.java:396)
  at android.content.res.ColorStateList.inflate(ColorStateList.java:275)
  at android.content.res.ColorStateList.createFromXmlInner(ColorStateList.java:222)
  at android.content.res.ColorStateList.createFromXml(ColorStateList.java:201)
  at android.content.res.Resources.loadColorStateListForCookie(Resources.java:2746)
  at android.content.res.Resources.loadColorStateList(Resources.java:2699) 
  at android.content.res.TypedArray.getColorStateList(TypedArray.java:485) 
  at android.widget.TextView.<init>(TextView.java:746) 
  at android.widget.TextView.<init>(TextView.java:671) 
  at android.support.v7.widget.AppCompatTextView.<init>(AppCompatTextView.java:62) 
  at android.support.v7.widget.AppCompatTextView.<init>(AppCompatTextView.java:58) 
  at android.support.v7.widget.AppCompatTextView.<init>(AppCompatTextView.java:54) 
  at android.support.v7.widget.Toolbar.setTitle(Toolbar.java:756) 
  at android.support.v7.widget.ToolbarWidgetWrapper.setTitleInt(ToolbarWidgetWrapper.java:261) 
  at android.support.v7.widget.ToolbarWidgetWrapper.setWindowTitle(ToolbarWidgetWrapper.java:243) 
  at android.support.v7.app.ToolbarActionBar.<init>(ToolbarActionBar.java:78) 
  at android.support.v7.app.AppCompatDelegateImplV9.setSupportActionBar(AppCompatDelegateImplV9.java:223) 
  at android.support.v7.app.AppCompatActivity.setSupportActionBar(AppCompatActivity.java:130) 
  at com.myapp.MainActivityWithNavigationViewExpandableList.onCreate(MainActivityWithNavigationViewExpandableList.java:64) 
  at android.app.Activity.performCreate(Activity.java:6251) 
  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107) 
  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369) 
  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
  at android.app.ActivityThread.-wrap11(ActivityThread.java) 
  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
  at android.os.Handler.dispatchMessage(Handler.java:102) 
  at android.os.Looper.loop(Looper.java:148) 
  at android.app.ActivityThread.main(ActivityThread.java:5417) 
  at java.lang.reflect.Method.invoke(Native Method) 
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 

我也搜索了其他 SO 答案。

资源“abc_hint_foreground_material_dark”不在我的“颜色”中。该资源应该来自 Android 的支持库,我在 Android Studio 中使用它。

abc_hint_foreground_material_dark 是对主题 foreground_material_dark 的 link,参见 here

NumberFormatException 表示此颜色值无效 ('Invalid float: "0.70000005dip"')。该值不是来自支持库,因此必须由您的资源设置(检查 colors.xml 和 values.xml)。颜色值应该是十六进制整数,而不是 dp 或任何其他单位。有关详细信息,请参阅 here

所以最后我对该问题进行了更多挖掘,我怀疑是 NumberFormatException。我在我的 dimens.xml 文件中搜索了十进制值并对其进行了注释。现在效果很好。基本上,Android 无法解析放置在 dimens.xml 文件中的十进制值。