2012-03-30 52 views
1

我在开发的应用程序中遇到了一些非常奇怪的行为。该应用程序不是很先进,它存储在sqlite数据库中的几个地方,并以列表视图,mapview等方式显示。因此,将应用程序部署到我的手机后浏览时,一切都很好,但过了一会儿listview不会膨胀。一个滚动条就好像物品在那里,但我看不到它们。我推后退按钮关闭应用程序。当重新访问应用程序时,我的第一个视图有两个按钮,全部搞乱了。按钮填充视口和背景消失等我无法弄清楚什么是错的。我Android应用程序中的奇怪行为(Android 2.3.5) - 事情膨胀错了

其他人面临这些问题?我的手机是Android 2.3.5的HTC Desire HD

如果你明白我的意思,那么该应用程序非常“布局沉重”。列表视图项目具有自定义背景图像,我使用自定义字体等。但是,该应用程序运行平稳,直到它吓坏了,并显示/不显示所有错误。

我的第一个想法是存在某种记忆问题,想法?

编辑: 我相信这可能与定义和使用#00000000作为透明颜色有关。改用@android:颜色/透明

解决方案: 所以在做了一些测试之后,我发现我之前在编辑中提到的确实是造成这个问题的原因。我已将colors.xml中的透明颜色定义为#00000000。这似乎工作,有时......而其他时间它抓取一个drawable,但不是一个名为“透明”的drawable,它抓住任何drawable。奇怪但真实。

+0

请发布一个明确的答案给你的问题,让每个人看到你已经找到了解决你的问题。并感谢您的调查,它真的帮助我们。 – keaukraine 2012-10-11 13:35:00

+0

对不起,我现在发布了一个我的问题的答案,并将其标记为已接受。很高兴我能帮上忙! :) – Alexander 2012-10-11 13:45:55

回答

2

经过一番测试,我终于找到了这个问题的原因。我已将colors.xml中的透明颜色定义为#00000000。这似乎工作,有时......而其他时间它抓取一个drawable,但不是一个名为“透明”的drawable,它抓住任何drawable。奇怪但真实。

所以要解决这个问题,你应该使用@android:color/transparent而不是当你想要透明度,例如视图背景。

0

如果有内存错误,你应该能够在logcat中捕获它们。你会得到“虚拟机在xxxx字节分配失败”消息(或类似的)。愚蠢/愚蠢的答案:当我在我的应用程序中遇到布局问题时,这是因为我在更改布局后需要做一个干净的构建。你可能想从那里开始。

编辑:你也可以尝试模拟器,如果你怀疑存在内存问题,你可以用一个小堆来启动模拟器以迫使问题更早发生。您也可以在DDMS或Eclipse MAT中检查堆的使用情况,看看它是否泄漏。

+0

谢谢你的回应。我没有得到任何“虚拟机xxxx字节分配失败”,我已经做了几次清理。我查看了布局,我想我可能已经发现了这个问题。在我的“关于应用程序”活动中,我在scrollview中放置了一个非常大的图像。 scrollview也有一个很大的背景图片(足够愚蠢)。所以我摆脱了背景图像,用重复的图像取代它,删除了滚动视图内的图像,问题似乎已消失。很奇怪.. – Alexander 2012-03-31 07:35:22

0

即使使用@android:color/transparent,我仍然在Galaxy选项卡上遇到同样的问题。只能通过将android:background="@color/transparent"替换为android:background="@null"才能解决此问题。