0

我正在创建一个通知菜单(用于练习)。我创建了一个通知片段:

NotificationFragment(刚刚添加了第二个构造函数,并覆盖了 onCreateView):

class NotificationFragment {
    private String name;

    //the added constructor
    public NotificationFragment(String name) {
        this.name = name;
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        super.onCreateView(inflater, container, savedInstanceState);
        View view =  inflater.inflate(R.layout.notification_fragment, container, false);
        view.setId(View.generateViewId());
        return view;
    }
}

在我的活动中,我有一个 ConstraintLayout(notification_layout) 和一个添加 NotificationFragments 的函数:

主要活动:

private List<Integer> notifications = new ArrayList<>();

public void onStart() {
    notifications.clear();
    parseNotifications();
}

public void parseNotifications() {
    for(int i = 0; i < 10; i++) {
        try {Thread.sleep(1000L);} catch(Exception ignored) {}

        NotificationFragment notification = new NotificationFragment("not:" + i);
        FrameLayout fl = new FrameLayout(this);
        int last_id = (notifications.size() >= 1? notifications.get(notifications.size() - 1) : ConstraintSet.PARENT_ID);
        int onSide = (last_id == ConstraintSet.PARENT_ID? ConstraintSet.TOP : ConstraintSet.BOTTOM);

        int fl_id = View.generateViewId();
        fl.setId(fl_id);
        notification_layout.addView(fl);

        ConstraintSet cs = new ConstraintSet();
        cs.clone(notification_layout);
        cs.connect(fl_id, ConstraintSet.TOP, last_id, onSide);
        cs.applyTo(notification_layout);

        notifications.add(fl_id);
    }
}

这会显示第一个通知,但屏幕上没有任何变化

我认为通知相互重叠。

问题

1) why my ConstraintSet doesn't working?
2) how can i get it to work?
4

0 回答 0