2015-01-19 3 views
0

В XML-файле я создаю TextView. Чем я хочу добавить в операцию из кодаОшибка добавления TextView

<TextView 
android:id="@+id/letter_cell" 
android:gravity="center" 
android:layout_weight="1" 
android:text="1" 
/> 

MainActivity

LayoutInflater inflater = (LayoutInflater)getSystemService (Context.LAYOUT_INFLATER_SERVICE); 
View table_pattern = inflater.inflate(R.layout.letters_table, null); 
TextView txt_row = (TextView) table_pattern.findViewById(R.id.letter_cell); 

LinearLayout linLayout = new LinearLayout(this); 
linLayout.setOrientation(LinearLayout.VERTICAL); 
LayoutParams linLayoutParam = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); 
setContentView(linLayout, linLayoutParam); 

linLayout.addView(txt_row); 

После приложения запустить я получаю ошибку

java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first. 

ответ

0

Вы принимаете элемент из одной точки зрения (TextView от R.layout.letters_table) и пытается добавить его в LinearLayout. Вы должны либо добавить все раздутое представление, либо создать программный код TextView. В представлениях может быть только один родительский элемент и будет вызывать исключение, которое вы видите при попытке добавить в другое представление.

0

txt_row textView уже имеет родителя, потому что он находится внутри table_pattern. Вам нужно:

  • Оставьте TextView один в своем собственном файле XML, ИЛИ ...
  • Удалите его из своего родителя первым:

    table_pattern.removeView(txt_row); 
    linLayout.addView(txt_row); 
    

Оба должны работать. Надеюсь, поможет!