我在我的应用中实现了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
P.S。我不想使用ActionBarSherlock!
答案 0 :(得分:1)
Oopsie,
剩余向后兼容
如果您想在应用程序中提供操作栏并保留 与早于3.0的Android版本兼容,您需要创建 活动布局中的操作栏(因为ActionBar类 旧版本不提供。)
为了帮助您,Action Bar Compatibility示例应用程序提供了一个API 图层和操作栏布局,允许您的应用使用其中一些 ActionBar API并通过替换支持旧版Android 带有自定义操作栏布局的传统标题栏。
这是我的问题的答案吗?
修改:示例应用程序是糟糕的。
答案 1 :(得分:1)
你可以使用 http://actionbarsherlock.com/ 并将支持库添加到您的项目,然后操作栏将在1.6及以上
上工作答案 2 :(得分:1)
您可以检查当前的操作系统版本并运行支持的代码,例如
if(android.os.Build.VERSION.SDK_INT < 11){
// use api available only in sdk < 11
}else{
// use api available in sdk 11
}
答案 3 :(得分:0)
这是为了通知您,您应该使用Action Bar Sherlock。这是John Watson提供的非常棒的功能/库。
请参阅此slide share教程。它一定会帮到你。
如果您对Action Bar Sherlock有任何疑问,请与我们联系。
由于
答案 4 :(得分:0)
您只需添加android-support-v7-appcompat.jar
然后使用&#34; android.support.v7.widget.SearchView&#34;
http://developer.android.com/reference/android/support/v7/widget/SearchView.html