无法启动片段:指定的子节点已经有父节点

时间:2015-10-29 13:25:24

标签: android android-fragments

我的孩子已经有了父母"错误接近很多人所得到的,然而,我正在做一些不同的事情(就我的搜索显示我而言)。我假设我添加片段的方式不一定是错的,但我不能为我的生活弄清楚我添加的片段是如何已经有父母。

我正在使用要加载到FrameLayout中的片段从我的主要活动启动。这是我主要活动中的onCreate:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    realm = Realm.getDefaultInstance();

    if (savedInstanceState == null) {

    }

    tripsFragment = new CarTripsOverview();
    getSupportFragmentManager().beginTransaction().add(R.id.content_container, tripsFragment).commit();
}

以下是为CarTripsOverview(这是一个片段)运行的方法:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    if (getArguments() != null) {

    }

    setUpRealm();
}

void setUpRealm() {
    realm = Realm.getDefaultInstance();
    RealmQuery<Car> carQuery = realm.where(Car.class);
    RealmResults<Car> carResults = carQuery.findAll();
    carAdapter = new CarArrayAdapter(getActivity(),0, carResults, true);

    RealmQuery<Trip> tripQuery = realm.where(Trip.class);
    RealmResults<Trip> tripResults = tripQuery.findAll();
    tripAdapter = new TripAdapterRealm(getActivity(), 0, tripResults, true);
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_car_trips_overview, container, true);

    // Bind all of the views with Butter Knife
    ButterKnife.bind(this, view);

    setUpSwipeMenu();

    // Add my event listeners
    tripListView.setAdapter(tripAdapter);

    carSpinner.setAdapter(carAdapter);

    return view;
}

void setUpSwipeMenu() {
    SwipeMenuCreator creator = new SwipeMenuCreator() {
        @Override
        public void create(SwipeMenu menu) {
            SwipeMenuItem deleteItem = new SwipeMenuItem(getContext());
            deleteItem.setBackground(new ColorDrawable(Color.RED));
            deleteItem.setWidth(MathHelper.dipToPixels(getContext(), 90));
            deleteItem.setTitle("Delete");
            deleteItem.setTitleColor(Color.WHITE);
            deleteItem.setTitleSize(18);
            menu.addMenuItem(deleteItem);
        }
    };

    tripListView.setMenuCreator(creator);

    tripListView.setOnMenuItemClickListener(new SwipeMenuListView.OnMenuItemClickListener() {
        @Override
        public boolean onMenuItemClick(int position, SwipeMenu menu, int index) {
            Trip trip = tripAdapter.getItem(position);
            switch (index) {
                case 0:
                    delete(trip);
                    tripAdapter.notifyDataSetChanged();
                    break;
            }
            return false;
        }
    });
}

我最大的问题是,我完全不了解我将孩子加入父母的地方。

我的所有源代码都可以找到here

1 个答案:

答案 0 :(得分:1)

而不是:

View view = inflater.inflate(R.layout.fragment_car_trips_overview, container, true);

使用:

View view = inflater.inflate(R.layout.fragment_car_trips_overview, container, false);

注意最后一个参数现在是false。如果您使用true,您刚刚创建的视图将自动添加到容器中(膨胀的第二个参数)。对于片段,请始终在false中使用onCreateView(...)