Указанный ребенок уже имеет родителя, который вы должны вызвать.

Хиии... ребята... я новичок в разработке android.. я получил это исключение, плз, помогите мне.."
указанный ребенок уже имеет родителя, которого вы должны вызвать removeview ".
макет таблицы android textview в цикле txtAmount.for не вводится в txtAmount для отображения текста.
он показывает мое имя элемента и рейтинг, а также мои указанные textview txtItemName и txtRate соответственно, но он не показывает количество текста в txtAmount в цикле for... показать следующее исключение.."указанный дочерний элемент уже имеет родителя, которого вы должны вызвать removeview".

public class ConfirmOrder extends Activity {
    TextView txtLength;
    int length,rate,amount;
    String name;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
        setContentView(R.layout.confirmorder);
        Intent intent = getIntent();
         length=intent.getIntExtra("LENGTH", 0);
         rate=intent.getIntExtra("Rate", 0);
         amount=intent.getIntExtra("Amount", 0);
         name=intent.getStringExtra("Name");
        txtLength.setText(String.valueOf(amount));
         Log.d("length",""+length);
         Log.d("name",""+name);
         Log.d("Rate",""+rate);
         Log.d("Amount",""+amount);
        try
         {
        TableLayout tv=(TableLayout) findViewById(R.id.table);
                tv.removeAllViewsInLayout();
                int flag=1;
                for(int i=0;i<=10;i++)
            {
        TableRow tr=new TableRow(ConfirmOrder.this);
                 tr.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
                 if(flag==1)
                 {
                   TextView Name=new TextView(ConfirmOrder.this);
                   Name.setPadding(10, 0, 0, 0);
                   Name.setTextSize(20);
                   Name.setText("ItemName");
                   Name.setTextColor(Color.WHITE);
                   tr.addView(Name);
                   TextView Rate=new TextView(ConfirmOrder.this);
                   Rate.setPadding(10, 0, 0, 0);
                   Rate.setTextSize(20);
                   Rate.setText("Rate");
                   Rate.setTextColor(Color.WHITE);
                   tr.addView(Rate);
                   TextView Amount=new TextView(ConfirmOrder.this);
                   Amount.setPadding(10, 0, 0, 0);
                   Amount.setTextSize(20);
                   Amount.setText("Amount");
                   Amount.setTextColor(Color.WHITE);
                   tr.addView(Amount);
                   tv.addView(tr);

                   final View vline = new View(ConfirmOrder.this);
                   vline.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.FILL_PARENT, 2));
                   vline.setBackgroundColor(Color.GRAY);
                   tv.addView(vline);
                   flag=0;
                  }
                else
                 {
                   int l;
                   TextView[] txtItemName=new TextView[10];
                   TextView[] txtRate=new TextView[10];
                   TextView[] txtAmount=new TextView[10];
                   for( l=0; l<=10; l++)
                   {
                    txtItemName[l] = new TextView(this);
                    txtItemName[l].setTextSize(15);
                    txtItemName[l].setId(l);
                    txtItemName[l].setText(name);
                       tr.addView(txtItemName[l]);
                       tv.addView(tr);

                       txtRate[l] = new TextView(this);
                       txtRate[l].setTextSize(15);
                       txtRate[l].setId(l);
                       txtRate[l].setText(String.valueOf(rate));
                       tr.addView(txtRate[l]);
                       tv.addView(tr);

                       txtAmount[l] = new TextView(this);
                       txtAmount[l].setTextSize(15);
                       txtAmount[l].setId(l);
                     txtAmount[l].setText(String.valueOf(amount));
                       tr.addView(txtAmount[l]);
                      tv.addView(tr);


                   }                   
                   final View vline1 = new View(ConfirmOrder.this);
                   vline1.setLayoutParams(new TableRow.LayoutParams(TableRow.LayoutParams.FILL_PARENT, 1));
                   vline1.setBackgroundColor(Color.WHITE);
                   tv.addView(vline1); 
               }

               }

         }
         catch(Exception e)
         {
                 Log.e("log_tag", "Error parsing data "+e.toString());
                System.out.println("ERROR : " + e.getMessage());
                Log.d("Message",""+e.getMessage());

         }

    }   
}

1 ответ

Из кода исключение должно происходить здесь...

tv.addView(tr);

Так как вы снова добавляете ту же строку в макет таблицы. Любое представление может быть добавлено только к одному Родителю. Если вы хотите изменить родителя, вам нужно удалить представление из текущего родителя, а затем добавить его к другому родителю, если необходимо.

Другие вопросы по тегам