2011-12-14 4 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

에 대한 View로 설정하는 것을 레이아웃을 팽창하려는 경우, 당신은 당신이 rateDialogBuilder.setView(layout);

을 다른 부모에 추가하고 오류 가리키는? –

+0

그 질문에, alertDialog.show(); – user975869

답변

9

오류가 발생하는 것은 부모에게 이미 추가 된 후 View을 부모에게 추가하는 것입니다.

코드를 보면, 그것은 layout_root 당신에게

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

추가 custom_rate_dialog처럼 보인다. 방금 어떤 라인이있는 Dialog 다음 바로 할

layout = inflater.inflate(R.layout.custom_rate_dialog, null); 
+1

덕분에 더 나은 연습이 될지도 모르지만 문제는 내가 어떻게 든 안드로이드를 추가 한 것입니다 : id = "@ + id/layout_root"어떻게 든 주 활동의 레이아웃 xml ... 바보 같은 날 4 시간이 걸렸습니다. – user975869

관련 문제