【发布时间】:2011-08-20 07:13:09
【问题描述】:
--匿名回答是我解决这个问题的答案。--
我一直在为 Android 编写一个应用程序,在 Honeycomb 中一切正常,但在我的 FroYo 和 Gingerbread 设备上运行不佳(与您的预期相反)。
这是我认为导致问题的代码:
@Override
protected void onStart() {
int versionNumber = Integer.valueOf(android.os.Build.VERSION.SDK);
if (versionNumber == 11) {
super.onStart();
ActionBar actionBar = this.getActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
}
}
在这里我实现了 ActionBar 的图标到首页功能,我添加了 versionNumber 变量,因为我认为在 Honyecomb 之前的设备中缺少 ActionBar 会导致活动运行时出现问题,但它仍然会崩溃并且我相信这是问题所在,尽管我在调试方面很糟糕并且不理解 logcat 给我的任何东西。
编辑:logcat - 我希望我得到了正确的部分?!
08-20 17:21:41.326: WARN/ActivityManager(2707): 试图启动 com.squirculardesign.android.pixel/.About 08-20 17:21:41.346: INFO/dalvikvm(4059): 找不到方法 com.squirculardesign.android.pixel.About.getActionBar,引用自 方法 com.squirculardesign.android.pixel.About.onStart 08-20 17:21:41.346:WARN/dalvikvm(4059):VFY:无法解析虚拟 方法54:Lcom/squirculardesign/android/pixel/About;.getActionBar ()Landroid/app/ActionBar; 08-20 17:21:41.346: 调试/dalvikvm(4059): VFY:在 0x0011 08-20 17:21:41.346 处替换操作码 0x6e: DEBUG/dalvikvm(4059): VFY: 死码 0x0014-0018 in Lcom/squirculardesign/android/pixel/About;.onStart()V 08-20 17:21:41.386: INFO/ALSAModule(2588): 初始化 ALSA PLAYBACK 设备 hifi 08-20 17:21:41.386: WARN/AudioFlinger(2588): 写入被阻止 108 毫秒,3 次延迟写入,线程 0x5e758 08-20 17:21:41.406: 调试/dalvikvm(4059):GC_EXTERNAL_ALLOC 释放 38K,释放 52% 2621K/5379K,外接190K/518K,暂停36ms 08-20 17:21:41.596: INFO/AudioFlinger(2588): 停止输出 streamType (0, 1) for 1 08-20 17:21:41.596:调试/音频硬件雅马哈(2588): AudioStreamOut::setParameters(keyValuePairs="stop_output_streamtype=1") 08-20 17:21:42.096: 错误/yamaha::media::Parameters(2588): SalesCode = OPS 08-20 17:21:42.671:错误/灯(2707):write_int:路径 /sys/devices/virtual/misc/melfas_touchkey/亮度,值 2 08-20 17:21:42.671:WARN/PowerManagerService(2707):定时器 0x7->0x3|0x3 08-20 17:21:42.671:信息/PowerManagerService(2707):Ulight 7->3|0 08-20 17:21:42.671:调试/PowerManagerService(2707):setLightBrightness: mButtonLight:0 08-20 17:21:43.666:信息/ALSAModule(2588):终止 ALSA PLAYBACK 设备 hifi 08-20 17:21:44.086: 错误/yamaha::media::Parameters(2588): SalesCode = OPS 08-20 17:21:51.181:WARN/ActivityManager(2707):启动超时已过期, 放弃唤醒锁! 08-20 17:21:51.336:警告/活动管理器(2707): HistoryRecord{40a6f0a8 的活动空闲超时 com.squirculardesign.android.pixel/.About} 08-20 17:21:56.456: 调试/dalvikvm(2929):GC_EXPLICIT 释放 672K,53% 释放 3917K/8327K, 外部 12588K/12670K,暂停 121ms 08-20 17:22:01.876: 信息/状态栏策略(2834):onSignalStrengthsChanged 08-20 17:22:04.006:调试/电池服务(2707):更新开始 08-20 17:22:04.011:错误/电池服务(2707):TMU 状态 = 0 08-20 17:22:04.011:调试/电池服务(2707):更新电池级别:79 规模:100 状态:2 健康:2 存在:真实 电压:4050 温度: 270 技术:锂离子交流电供电:假 USB 供电:真图标:17302229
【问题讨论】:
-
你能从 logcat 中发布错误吗?
-
已添加,希望我复制了正确的部分??还;格式很糟糕。
-
只是说,测试一个确切的 SDK 版本号是个坏主意。至少您应该 >= 与未来版本兼容(当您无法检查特定功能时)。
-
我最初确实将它设置为 >=,并且我一直打算在任何类型的发布之前将其设置为 >=,但是在我从逻辑上查看它并且无法解决我的错误之后,我开始修补可能会绊倒它的事情。
-
匿名回答是我解决这个问题的答案。
标签: android