如何从子活动

时间:2016-08-05 10:14:46

标签: android android-layout android-fragments android-fragmentactivity

我有一项活动在全屏幕上显示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布局,但如果我使用它,它就不会获得父活动的元素。

1 个答案:

答案 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