首页 > 解决方案 > 当我在 Android Studio 中动态添加一个新按钮时,第一个按钮消失了

问题描述

当我在约束布局中的 Android Studio 中添加一个新按钮时,第一个按钮消失了。我认为问题在于观点。

有两个按钮会弹出一个弹出菜单,让我从其他按钮中进行选择。然后我将新按钮添加到原始按钮的位置。不幸的是,当我尝试添加第二个按钮时,第一个按钮消失了。我包括了一些截图,因为我知道这很难理解。

这是弹出菜单或和弦选择器。我选择了一个和弦,应用程序添加了它。但是当我为右侧的灰色空按钮选择另一个时,左侧的蓝色按钮消失了。它实际上在新的彩色按钮下,这很奇怪。

2 个灰色按钮分别称为 empty1 和 empty2。 在此处输入图像描述

@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    final ViewGroup rootView = (ViewGroup) inflater.inflate(R.layout.page_empty, container, false);



    final ConstraintLayout mConstraintLayout = (ConstraintLayout) rootView.findViewById(R.id.constraintEmpty);

   final ConstraintSet set = new ConstraintSet();

    set.clone(mConstraintLayout);

    final Typeface typeface = ResourcesCompat.getFont(getContext(), R.font.comfortaaregular);

    final AppCompatButton empty1 = (AppCompatButton) rootView.findViewById(R.id.empty1);
    empty1.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {

            PopupMenu popupMenu = new PopupMenu(getContext(), v);
            popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
                @Override
                public boolean onMenuItemClick(MenuItem item) {
                    switch (item.getItemId()) {
                        case cm7popup:
                            Toast.makeText(getContext(), "Cm7 Chosen", Toast.LENGTH_LONG).show();
                            alreadychosen=true;
                            final AppCompatButton cm7button = new AppCompatButton(getContext());

                            cm7button.setText("Cm7");
                            cm7button.setTextSize(18);
                            cm7button.setPadding(16,0,0,0);

                            cm7button.setTypeface(typeface);

                            cm7button.setId(cm7);           // <-- Important
                            cm7button.setBackgroundResource(R.drawable.blue_button);
                            cm7button.setGravity(Gravity.TOP);
                            mConstraintLayout.addView(cm7button);
                            set.connect(cm7button.getId(),ConstraintSet.TOP,R.id.guidelinetest13,ConstraintSet.TOP,0);
                            set.connect(cm7button.getId(), ConstraintSet.BOTTOM, R.id.guidelinetest14, ConstraintSet.BOTTOM, 0);
                            set.connect(cm7button.getId(),ConstraintSet.RIGHT,R.id.guidelinetest2,ConstraintSet.RIGHT,0);
                            set.connect(cm7button.getId(),ConstraintSet.LEFT,R.id.guidelinetest1,ConstraintSet.LEFT,0);
                            // set.constrainHeight(cm7button.getId(), 200);
                            set.applyTo(mConstraintLayout);


                            cm7button.setOnClickListener(new View.OnClickListener() {
                                @Override
                                public void onClick(View v) {
                                    MainActivity.myVib.vibrate(vibstark);
                                    SoundEngine.playsound57();

                                }
                            });

                            cm7button.setOnLongClickListener(new View.OnLongClickListener(){

                                public boolean onLongClick(View v){

                                    mConstraintLayout.removeView(cm7button);
                                    Toast.makeText(getContext(), "Chord Removed", Toast.LENGTH_SHORT).show();

                                    return true;
                                }


                              });



                            return true;

然后这里还有其他 95 个案例........ 然后是灰色按钮 2。

    final AppCompatButton empty2 = (AppCompatButton) rootView.findViewById(R.id.empty2);
    empty2.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {

            PopupMenu popupMenu = new PopupMenu(getContext(), v);
            popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
                @Override
                public boolean onMenuItemClick(MenuItem item) {
                    switch (item.getItemId()) {
                        case cm7popup:
                            Toast.makeText(getContext(), "Cm7 Chosen", Toast.LENGTH_LONG).show();
                            alreadychosen=true;
                            final AppCompatButton cm7button = new AppCompatButton(getContext());

                            cm7button.setText("Cm7");
                            cm7button.setTextSize(18);
                            cm7button.setPadding(16,0,0,0);


                            cm7button.setTypeface(typeface);

                            cm7button.setId(cm7_b);           // <-- Important
                            cm7button.setBackgroundResource(R.drawable.blue_button);
                            cm7button.setGravity(Gravity.TOP);
                            mConstraintLayout.addView(cm7button);
                            set.connect(cm7button.getId(),ConstraintSet.TOP,R.id.guidelinetest13,ConstraintSet.TOP,0);
                            set.connect(cm7button.getId(), ConstraintSet.BOTTOM, R.id.guidelinetest14, ConstraintSet.BOTTOM, 0);
                            set.connect(cm7button.getId(),ConstraintSet.RIGHT,R.id.guidelinetest4,ConstraintSet.RIGHT,0);
                            set.connect(cm7button.getId(),ConstraintSet.LEFT,R.id.guidelinetest3,ConstraintSet.LEFT,0);
                            // set.constrainHeight(cm7button.getId(), 200);
                            set.applyTo(mConstraintLayout);



                            cm7button.setOnClickListener(new View.OnClickListener() {
                                @Override
                                public void onClick(View v) {
                                    MainActivity.myVib.vibrate(vibstark);
                                    SoundEngine.playsound57();

                                }
                            });

                            cm7button.setOnLongClickListener(new View.OnLongClickListener(){

                                public boolean onLongClick(View v){

                                    mConstraintLayout.removeView(cm7button);
                                    Toast.makeText(getContext(), "Chord Removed", Toast.LENGTH_SHORT).show();
                                    return true;
                                }


                            });



                            return true;

还有95个案例。

标签: javaandroidlistviewbuttonconstraints

解决方案


推荐阅读