2011-12-14 73 views
4

需要立即帮助!使用的代码工作正常,但一段时间后,我发现没有按等级t work anymore and gives "the specified child already has a parent, call removeView() first..." on the alertDialog.show();'行:指定的孩子在充气视图上已经有父错误

///// 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(); 

     } 
    }); 

    ////// 

奇怪的事情,如果我把它不会崩溃removeAllViews()removeView()只是alertDialog.show();之前,但打开搞砸了对话,我可以看到评级和当前的活动或平等。此外,问题可能在代码中的其他地方,因为这用于正常工作,任何想法我应该寻找什么或如何改变这个工作?

+0

什么线是错误指向? – 2011-12-14 00:56:40

+0

其在问题中,alertDialog.show();给出了错误 – user975869 2011-12-14 01:00:33

回答

9

您遇到的错误是您已将父项添加到父项后,您将向父项添加View

看你的代码,它看起来像,

layout = inflater.inflate(R.layout.custom_rate_dialog, (ViewGroup) findViewById(R.id.layout_root)); 

附加custom_rate_dialog你layout_root。然后,你将它添加到当你做rateDialogBuilder.setView(layout);

另一位家长如果你只是想夸大该布局将其设置为ViewDialog然后就去做

layout = inflater.inflate(R.layout.custom_rate_dialog, null); 
相关问题