Android 如何在AlertDialog中设置动态评级栏视图?

Android 如何在AlertDialog中设置动态评级栏视图?,android,Android,首先,它运行平稳,但当我再次单击它时,它停止 尝试在AlertDialog中设置动态评级栏视图时出错 java.lang.IllegalStateException:指定的子级已具有父级。必须首先调用子级的父级上的removeView 不要夸大观点。 通过setContentView设置xml,并通过FindviewbyId访问分级栏,因为每次调用ad.show时,都会创建一个新对话框,并将相同的视图rtb添加为对话框内容,因此第一次有效,第二次出现异常。 要解决此问题,请执行以下操作: 您可以

首先,它运行平稳,但当我再次单击它时,它停止

尝试在AlertDialog中设置动态评级栏视图时出错

java.lang.IllegalStateException:指定的子级已具有父级。必须首先调用子级的父级上的removeView

不要夸大观点。
通过setContentView设置xml,并通过FindviewbyId访问分级栏,因为每次调用ad.show时,都会创建一个新对话框,并将相同的视图rtb添加为对话框内容,因此第一次有效,第二次出现异常。 要解决此问题,请执行以下操作:

您可以将从充气到设置视图的所有代码移动到onClick方法中 或者在onClick中,从其父级移除rtb: 如果rtb.getParent instanceOf ViewGroup{ViewGroup rtb.getParent.removeViewrtb;} 或者重构代码,让它只创建和显示一个对话框。
 rtb = LayoutInflater.from(getContext()).inflate(R.layout.ratingbar_dialog, null);
    rb = (RatingBar) rtb.findViewById(R.id.rtbDialog);

    ad = new AlertDialog.Builder(getContext());
    ad.setView(rtb);

    ll1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            ad.setMessage("Rate Price");

            ad.setNegativeButton("cancel", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {

                    dialogInterface.dismiss();
                }
            });
            ad.setPositiveButton("Submit", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    rtbPrice.setRating(rb.getRating());
                }
            });
            ad.show();
        }
    });