我最近将手机更新为姜饼,令我惊恐的是我的一个应用程序停止了工作!
该应用程序由SurfaceView和布局(视图)组成,它在此SurfaceView上显示为叠加层。
xml看起来像这样:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<com.mycompany.MySurfaceView
android:id="@+id/myview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
<include layout="@layout/settings"
android:layout_alignTop="@id/myview"
android:visibility="invisible"
android:id="@+id/settings"
/>
</RelativeLayout>
当用户按下菜单按钮时,我使用此代码显示视图:
View settings = (View)findViewById(R.id.settings);
settings.setVisibility(View.VISIBLE);
这在早于2.3的版本上运行完美,但现在行为非常随机。
观察
很少一切都有效。
有时隐藏/取消隐藏后,视图会显示出来。
有时您可以按下视图上的按钮(即使它不可见),这会使视图显示应用程序生命周期的其余部分。
getVisibility方法始终报告正确的值。
我尝试了什么
重建绘制缓存
使用BringToFront方法
发布无效
将视图的初始值设置为“可见”,这使一切正常,但我真的希望它最初是不可见的!
如果有人想检查问题,你可以在我的应用程序中自己尝试(它在市场上,搜索“chainparticles”)。
谢谢!
答案 0 :(得分:1)
通过将视图初始状态更改为“已消失”来解决此问题。 WTF?!