我是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()”。
有谁知道如何解决这个问题?
答案 0 :(得分:0)
正如例外所说......视图不能多次添加。您的视图在活动的xml中定义,因此具有父级。您编写它的ViewGroup。如果由于某种原因您想将该视图移动到另一个ViewGroup,则必须先通过调用
将其删除 ((ViewGroup)scrollAppsView.getParent()).removeView(scrollAppsView);
然而(即使我不知道你想要做什么)我很确定你是以错误的方式接近这个。如果您已将TextView包含在xml中,则没有理由再次以programmaticaly方式添加它们。它们已经添加完毕。