android - IllegalStateException:指定的孩子已经有一个父母。您必须先在孩子的父母上调用 removeView()
问题描述
我是 Android 新手,正在尝试创建一个 LinearLayout 并向其中添加 TextViews。
private TextView listOfInstalledApplicationsText;
private TextView listOfInstalledPackagesText;
private TextView scrollAppsView;
private ArrayList<CharSequence> installedApplications;
private ArrayList<CharSequence> installedPackages;
private LinearLayout layout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_vib_app_assigment);
listOfInstalledApplicationsText = (TextView) findViewById(R.id.installedAppsView);
listOfInstalledPackagesText = (TextView) findViewById(R.id.installedPackagesView);
layout = findViewById(R.id.dropDownMenuLayout);
LinearLayout.LayoutParams p = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.FILL_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT
);
installedApplications = this.getApplicationNames();
installedPackages = this.getPackageNames();
scrollAppsView = findViewById(R.id.scrollAppNamesView);
layout.addView(scrollAppsView);
}
不幸的是,在最后一行我收到以下错误:“IllegalStateException:指定的孩子已经有一个父母。您必须首先在孩子的父母上调用 removeView()”。
有谁知道如何解决这一问题?
解决方案
正如例外所说...一个视图不能被添加超过一次。您的视图在活动的 xml 中定义,因此具有父级。您在其中编写它的 ViewGroup。如果由于某种原因您想将该视图移动到另一个 ViewGroup,那么您必须首先通过调用将其删除
((ViewGroup)scrollAppsView.getParent()).removeView(scrollAppsView);
但是(即使我不知道您要做什么)我很确定您以错误的方式处理此问题。如果您在 xml 中包含了 TextView,则没有理由以编程方式再次添加它们。它们都已添加。
推荐阅读
- boost - 执行布局算法后可视化提升图拓扑
- c# - 如何通过 C# 将 woocommerce 类别与我的 API 数据库同步
- python - 从邮政编码或城镇名称查找农贸市场
- php - 通过 PHP 和 MySql 进行数据替换触发
- powerbi - DAX 子查询度量?
- eclipse - Eclipse 2019-03 在 macOS Catalina 上设置 C/C++ lldb 调试器
- c# - 如何使用 linq 将平面列表转换为多级查找?
- angular - 使用 $localize 时如何指定自定义翻译 ID
- c# - Visual Studio 中的错误 CS0311 通用错误
- mongodb - MongoDB 根据其他集合中的现有引用查找文档