1

我的应用程序中有一个已ActionBar实现的SearchView小部件和一个小部件。它在 Nexus 7、HTC Sensation 等设备上运行良好——我相信任何 Android 版本早于 3.0 的地方。但它不能在装有 Android 2.3.5 的手机上运行。

当程序在旧设备上运行时,无论如何“不显示”操作栏和其他不受支持的东西?

这是我在旧设备上运行时得到的错误日志,抱歉长度,不太明白哪个位有用:

09-27 12:15:03.008: I/dalvikvm(824): Failed resolving Lcom/example/stroke/handling/MainActivity; interface 407 'Landroid/widget/SearchView$OnQueryTextListener;'
09-27 12:15:03.008: W/dalvikvm(824): Link of class 'Lcom/example/stroke/handling/MainActivity;' failed
09-27 12:15:03.008: D/AndroidRuntime(824): Shutting down VM
09-27 12:15:03.008: W/dalvikvm(824): threadid=1: thread exiting with uncaught exception (group=0x400205a0)
09-27 12:15:03.018: E/AndroidRuntime(824): FATAL EXCEPTION: main
09-27 12:15:03.018: E/AndroidRuntime(824): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.stroke.handling/com.example.stroke.handling.MainActivity}: java.lang.ClassNotFoundException: com.example.stroke.handling.MainActivity in loader dalvik.system.PathClassLoader[/data/app/com.example.stroke.handling-1.apk]
09-27 12:15:03.018: E/AndroidRuntime(824):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1743)
09-27 12:15:03.018: E/AndroidRuntime(824):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1851)
09-27 12:15:03.018: E/AndroidRuntime(824):  at android.app.ActivityThread.access$1500(ActivityThread.java:132)
09-27 12:15:03.018: E/AndroidRuntime(824):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1038)
09-27 12:15:03.018: E/AndroidRuntime(824):  at android.os.Handler.dispatchMessage(Handler.java:99)
09-27 12:15:03.018: E/AndroidRuntime(824):  at android.os.Looper.loop(Looper.java:150)
09-27 12:15:03.018: E/AndroidRuntime(824):  at android.app.ActivityThread.main(ActivityThread.java:4277)
09-27 12:15:03.018: E/AndroidRuntime(824):  at java.lang.reflect.Method.invokeNative(Native Method)
09-27 12:15:03.018: E/AndroidRuntime(824):  at java.lang.reflect.Method.invoke(Method.java:507)
09-27 12:15:03.018: E/AndroidRuntime(824):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
09-27 12:15:03.018: E/AndroidRuntime(824):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
09-27 12:15:03.018: E/AndroidRuntime(824):  at dalvik.system.NativeStart.main(Native Method)
09-27 12:15:03.018: E/AndroidRuntime(824): Caused by: java.lang.ClassNotFoundException: com.example.stroke.handling.MainActivity in loader dalvik.system.PathClassLoader[/data/app/com.example.stroke.handling-1.apk]
09-27 12:15:03.018: E/AndroidRuntime(824):  at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:240)
09-27 12:15:03.018: E/AndroidRuntime(824):  at java.lang.ClassLoader.loadClass(ClassLoader.java:551)
09-27 12:15:03.018: E/AndroidRuntime(824):  at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
09-27 12:15:03.018: E/AndroidRuntime(824):  at android.app.Instrumentation.newActivity(Instrumentation.java:1040)
09-27 12:15:03.018: E/AndroidRuntime(824):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1735)
09-27 12:15:03.018: E/AndroidRuntime(824):  ... 11 more

PS 我不想使用 ActionBarSherlock!

4

5 回答 5

1

哎呀,

保持向后兼容

如果您想在您的应用程序中提供操作栏并保持与 3.0 之前的 Android 版本兼容,您需要在 Activity 的布局中创建操作栏(因为 ActionBar 类在旧版本上不可用)。

为了帮助您,Action Bar Compatibility 示例应用程序提供了一个 API 层和操作栏布局,允许您的应用程序使用一些 ActionBar API,并通过将传统的标题栏替换为自定义操作栏布局来支持旧版本的 Android。

这是我问题的答案吗?

编辑:那个示例应用程序很糟糕。

于 2012-09-27T11:28:15.547 回答
1

您可以使用 http://actionbarsherlock.com/ 并将支持库添加到您的项目中,然后操作栏将在 1.6 及更高版本上工作

于 2012-09-27T11:41:33.417 回答
1

您可以检查当前的操作系统版本并运行支持的代码,例如

if(android.os.Build.VERSION.SDK_INT < 11){
   //  use api available only in sdk < 11
}else{
   //  use api available in sdk 11
} 
于 2012-09-27T12:30:47.510 回答
0

这是为了通知您,您应该使用Action Bar Sherlock。这是 John Watson 提供的非常棒的功能/库。

并参考这个幻灯片分享教程。它肯定会帮助你。

如果您对 Action Bar Sherlock 有任何疑问,请告诉我。

谢谢

于 2013-03-22T10:14:43.170 回答
0

你只需要添加android-support-v7-appcompat.jar
然后使用“android.support.v7.widget.SearchView”
http://developer.android.com/reference/android/support/v7/widget/SearchView.html

于 2014-10-14T03:25:30.613 回答