Immediate help needed !! The code used to work fine, but after a while I noticed that the rating doesn't matter t work anymore and gives "the specified child already has a parent, call removeView() first..." on the alertDialog.show (); `line:
///// Rating bar initialising Context mContext = ShowActivity.this; LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(LAYOUT_INFLATER_SERVICE); layout = inflater.inflate(R.layout.custom_rate_dialog, (ViewGroup) findViewById(R.id.layout_root)); final RatingBar rating_indicator = (RatingBar)findViewById(R.id.rating_bar_cafe_indicator); final float current_rating = (float)mDbHelper.getInt(mRowId, type, RATE_COLUMN); rating_indicator.setRating(current_rating); rateDialogBuilder = new AlertDialog.Builder(ShowActivity.this); rateDialogBuilder.setView(layout); rateDialogBuilder.setCancelable(false); rateDialogBuilder.setIcon(R.drawable.rate_star_med_on); rateDialogBuilder.setTitle("RATE IT!"); rateDialogBuilder.setPositiveButton("OK", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { rating_indicator.setRating(mDbHelper.getInt(mRowId, type, RATE_COLUMN)); ((ViewGroup)layout.getParent()).removeView(layout); dialog.cancel(); } }); ratingText = (TextView) layout.findViewById(R.id.rate_text); rating = (RatingBar) layout.findViewById(R.id.rating_bar_cafe); rating.setRating(current_rating); rating.setStepSize(1); rating.setOnRatingBarChangeListener(ShowActivity.this); if ((int)current_rating != 0) ratingText.setText("Your rating: " + (int)current_rating); Button rateButton = (Button) findViewById(R.id.button_rate); rateButton.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { AlertDialog alertDialog = rateDialogBuilder.create(); alertDialog.show(); } }); //////
The strange thing is if I call removeAllViews() or removeView() just before alertDialog.show(); , it does not crash, but opens a confused dialog where I can see both the rating and current activity or smth. Also the problem could be somewhere else in the code, because it worked perfectly, any ideas what I should look for or how to change it to make it work?
source share