我有一项活动在全屏幕上显示Google地图。
我的子活动延伸MapsActivity
。
当我从Parent延伸孩子时,它会在整个屏幕上显示Map
。
在Child Activity
中,我需要在顶部添加地图,在底部添加列表视图,这将在Child Activity Layout
中实施。
我尝试这样做,但它给了我以下错误消息,
引起:java.lang.IllegalStateException:指定的子级 已经有了父母。您必须在孩子的父母上调用removeView() 第一
public class PlacesListActivity extends GoogleMapsActivity{
View parentFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_google_map);
parentFragment= findViewById(R.id.g_map);
LinearLayout linearLayout= new LinearLayout(this);
linearLayout.setOrientation(LinearLayout.VERTICAL);
linearLayout.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));
linearLayout.addView(parentFragment);
在上面的代码中,我没有使用ChildActivity
布局,但如果我使用它,它就不会获得父活动的元素。
答案 0 :(得分:1)
您可以使用以下方法更改父级视图:
View viewToBeRemoved= view.findViewById(R.id.view_to_be_removed);
View parent = viewToBeRemoved.getParent();
if (parent != null) {
((ViewGroup) parent).removeView(viewToBeRemoved);
}
parent.addView(modifiedViewToBeAdded);
但不建议使用方法。
推荐的方法是在活动的一半中使用地图片段,并在活动的剩余部分显示列表。
请参阅此帖子了解How to use MapFragment