如何从崩溃的应用程序修复addView / removeView

时间:2019-04-06 11:22:05

标签: java android listview

我正在使用切换方法来确定是否根据微调器的选定值在视图中显示元素。我可以毫无问题地删除视图,但是当我在微调器中更改选择时,由于应用程序崩溃,我无法重新添加视图。

我尝试默认删除所有视图,然后根据需要在每个开关案例中添加它,但是当我添加新视图时,应用程序崩溃。我试图在每种情况下都添加和删除视图,而不使用默认值,但是当我向列表中添加视图时仍然会崩溃。

LinearLayout的ID为reps_layout

switch (a){

case "one":                       
myLayout.removeView(rowView.findViewById(R.id.reps_layout));
break;

case "two":
myLayout.addView(rowView.findViewById(R.id.reps_layout));
break;

default:
//myLayout.removeView(rowView.findViewById(R.id.reps_layout));
}

当我选择大小写为“ one”时,预期结果应该具有列表,但是已经删除了sets_field。然后,当我选择大小写为“两个”时,我想将reps_layout添加回列表中。

1 个答案:

答案 0 :(得分:0)

您可以像这样添加LinearLayout。无论如何,您都需要一个父布局。

switch (a){

case "one":                       
myLayout.removeView(rowView.findViewById(R.id.reps_layout));
break;

case "two":
LinearLayout layout =new LinearLayout(this);
    layout.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
myLayout.addView(layout));
break;

default:
//myLayout.removeView(rowView.findViewById(R.id.reps_layout));
}

我不知道您的项目,但认为将视图的可见性设置为GONE而不是将其隐藏可能更有意义。