0

hiii ...みんな... Android開発の新人..私はこの例外を手に入れました..助けてください..「
指定された子には、removeviewと呼ぶ必要がある親がすでにいます」.
txtAmount.forループでのandroid textviewテーブルレイアウトは、テキストを表示するためにtxtAmountに入りません..
それは私のアイテム名を表示し、指定されたテキストビューtxtItemNameとtxtRateをそれぞれ表示しますが、forループでtxtAmountに金額テキストを表示しません..次の例外を表示します。 . "指定された子には既に親があり、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());

         }

    }   
}
4

1 に答える 1

4

コードから、ここで例外が発生しているはずです...

tv.addView(tr);

同じ行をテーブル レイアウトに再度追加しているためです。どのビューも、1 つの親にのみ追加できます。親を変更する場合は、現在の親からビューを削除してから、必要に応じて他の親に追加する必要があります。

于 2013-02-12T15:50:13.157 に答える