我今天早些时候遇到过这个问题: https://code.google.com/p/android/issues/detail?id=55106
问题是:
该bug附有示例项目,用于演示问题。
只是想问一下是否有人遇到过同样的问题,并且知道解决方法吗?
提前谢谢。
LinearLayout的情况非常不稳定。我终于让项目工作了 - 参见第二个附加项目 https://code.google.com/p/android/issues/detail?id=55106
如果您转到item_main.xml并将android:textIsSelectable从false更改为true,则会显示错误。 保持android:textIsSelectable =“true”,但删除android:id =“@ + id / text” - 错误再次消失
我尝试使用此LinearLayout的主要原因是因为我想要关注您的布局动画示例。 http://developer.android.com/training/animation/layout.html
但似乎情况是如此不稳定,使用LinearLayout和方向更改,我需要回到工作ListView + Adapter方法,并找出在向适配器添加项目和重新验证列表时如何进行类似的布局动画。 / p>
答案 0 :(得分:2)
另一种解决方法是在onSaveInstanceState方法中删除LinearLayout中的所有视图。
@Override
protected void onSaveInstanceState(Bundle outState) {
LinearLayout linearLayout = (LinearLayout) findViewById(R.id.yourLinearLayoutId);
linearLayout.removeAllViews();
super.onSaveInstanceState(outState);
}
答案 1 :(得分:0)
您是否有任何特殊原因要为50个子布局进行充气然后将它们插入ScrollView而不是使用AdapterView?
在我看来,您可能应该使用ListView与某种适配器,它将为您处理行充气和数据绑定,这不仅会提高效率和性能,还会让您避免这种“错误”你遇到了什么。
每当你在一个循环中膨胀视图时,它应该是强提示你应该重新考虑你的方法并开始使用某种类型的AdapterView(ListView,Gallery等... )
答案 2 :(得分:0)
当您添加一些TextViews
并为其重复使用相同的ID(android:id="@+id/text"
)时,我最好的猜测是,一旦您调用,您就会遇到意外行为(充其量) findViewByID
方法。要做你显然想要做的事情(使用TextViews
列表,你可以做类似于here的建议,即创建一个TextViews
数组,实例化它们并保留它们内部参考。
你发现的实际上并不是一个bug,它的行为应该是这样:所有TextView
都有相同的id,所以所有的都会同时改变。
我查阅了文档中的actual reference(强调我的):
ID在整个树中不一定是唯一的,但应该 在您正在搜索的树的一部分中是唯一的(可能经常 是整棵树,所以最好是完全独特的 可能的)。