gpt4 book ai didi

android - 方向改变 : children of LinearLayout can't have @+id/something

转载 作者:行者123 更新时间:2023-11-29 21:43:31 25 4
gpt4 key购买 nike

来自 Android Google group 的交叉发布

我今天早些时候遇到了这个问题: https://code.google.com/p/android/issues/detail?id=55106

问题是:

  • LinearLayout 有 child
  • 每个 child 都从同一个 XML 布局文件中膨胀
  • 一个 child 有带有一些 ID 的嵌套元素。
    • ID 用于调用 findViewById(ID) 来设置一些值
  • 一切都在启动时正确显示,但在方向改变后,LinearLayout 的每个子项都显示最后一个数据项的值
  • 一旦从子 XML 布局文件中删除 ID,一切就会开始正常工作

该错误附有演示该问题的示例项目。

只是想问一下是否有人遇到过同样的问题并且知道解决方法?

提前谢谢你。


编辑:

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 方法并弄清楚如何在向适配器添加项目和重新验证列表时执行类似的布局动画。

最佳答案

另一种解决方法是在 onSaveInstanceState 方法中从 LinearLayout 中删除所有 View 。

@Override
protected void onSaveInstanceState(Bundle outState) {
LinearLayout linearLayout = (LinearLayout) findViewById(R.id.yourLinearLayoutId);
linearLayout.removeAllViews();
super.onSaveInstanceState(outState);
}

关于android - 方向改变 : children of LinearLayout can't have @+id/something,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16471287/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com