首先关闭 child 的 parent 上的 alertDialog Android removeView()

Dismiss alertDialog Android removeView() on the child's parent first

我想 close/dismiss 警报对话框但是当我点击按钮 valider 我有这个错误:我不知道哪个视图给我问题,即使在我的视图“layout”或“v

中没有方法删除视图
java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
at android.view.ViewGroup.addViewInner(ViewGroup.java:3562)
at android.view.ViewGroup.addView(ViewGroup.java:3415)
at android.view.ViewGroup.addView(ViewGroup.java:3391)
at com.android.internal.app.AlertController.setupView(AlertController.java:413)
at com.android.internal.app.AlertController.installContent(AlertController.java:241)
 at android.app.AlertDialog.onCreate(AlertDialog.java:337)
 at android.app.Dialog.dispatchOnCreate(Dialog.java:361)
 at android.app.Dialog.show(Dialog.java:262)
  at android.app.AlertDialog$Builder.show(AlertDialog.java:951)
  at com.surtymar.application.Fragments.FormContactFragment.onClick(FormContactFragment.java:503)

我不太清楚

 v.findViewById(R.id.btn_author).setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View view, MotionEvent motionEvent) {

            if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) {
                LayoutInflater inflater = (LayoutInflater) LayoutInflater.from(getActivity());
                final View layout = inflater.inflate(R.layout.accomplice_layout_solution, null);
                layout.setBackgroundColor(colors.getBackMixColor(colors.getForeground_color(), 0.30f));
                ListView lv = (ListView) layout.findViewById(R.id.listForm);

                adapterAgent = new MyFormAgentAdapter((MainActivity) getActivity(), finalfieldsAgent, realm, colors, R.layout.form_row_item);

                lv.setAdapter(adapterAgent);
                final AlertDialog.Builder b = new AlertDialog.Builder(getActivity());
                b.setView(layout);
                b.show();
                AllFilds.addAll(finalFields);

                layout.findViewById(R.id.btn_valide_form).setOnClickListener(new OnClickListener() {
                    @Override
                    public void onClick(View view) {


                        v.findViewById(R.id.numberPinContainerAuthor).setVisibility(View.VISIBLE);
                        TextView textView = (TextView) v.findViewById(R.id.numberOfCatsAuthor);

                        int numbr = 0;
                        if(AllFilds.size() > 0)
                            numbr++;
                         textView.setText(""+numbr);

                        b.show().dismiss(); // the error is here


                    }
                });

            }
            return false;
        }
    });

而不是这个

b.show().dismiss();

试试这个

b.dismiss();

当您调用方法 show() 两次时,您会收到该错误。

尝试以下代码

        Dialog d  = b.show(); // here you got the dialog object when u showing you dialog first 
        if (d!=null &&d.isShowing()){

            d.dismiss();
        }

改变这个

final AlertDialog.Builder b = new AlertDialog.Builder(getActivity());
            b.setView(layout);
            b.show();

final AlertDialog.Builder b = new AlertDialog.Builder(getActivity());
    b.setView(layout);
    final AlertDialog alertDialog = b.show();

并改变这个

b.show().dismiss();

if (alertDialog.isShowing())
        alertDialog.dismiss();