Tengo un problema relacionado con inflar y volver a utilizar el mismo TextView.
Es como si tratara de sobrescribir la misma vista de texto una y otra vez o algo así y no puede hacer eso?Usar ver para inflar varias veces
LayoutInflater inflater = LayoutInflater.from(this);
View mainlayout = inflater.inflate(R.layout.days_monday_inflate, null);
View layout_number = inflater.inflate(R.layout.inflate_number, null);
for (int i = 0; i < 10; i++) {
row = new TableRow(this);
number = (TextView) layout_number.findViewById(R.id.Number);
number.setTag(i);
number.setText(Integer.toString(i));
row.addView(number);
}
setContentView(mainlayout);
Aquí es el inflate_number.xml
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/Number"
android:layout_width="3dp"
android:layout_height="wrap_content"
android:layout_gravity="center|bottom"
android:text="1" />
Ésta es la im error al obtener y está en fila: 51, que es: row.addView(number);
07-18 20:54:25.124: E/AndroidRuntime(1166): Caused by: java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first. 07-18 20:54:25.124: E/AndroidRuntime(1166): at android.view.ViewGroup.addViewInner(ViewGroup.java:1970) 07-18 20:54:25.124: E/AndroidRuntime(1166): at android.view.ViewGroup.addView(ViewGroup.java:1865) 07-18 20:54:25.124: E/AndroidRuntime(1166): at android.view.ViewGroup.addView(ViewGroup.java:1822) 07-18 20:54:25.124: E/AndroidRuntime(1166): at android.view.ViewGroup.addView(ViewGroup.java:1802) 07-18 20:54:25.124: E/AndroidRuntime(1166): at com.trainingschedule.days.Monday.onCreate(Monday.java:50) 07-18 20:54:25.124: E/AndroidRuntime(1166): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 07-18 20:54:25.124: E/AndroidRuntime(1166): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
¡Muchas gracias! He estado sentado con esto durante aproximadamente 2 horas, abit noobish. Pero ahora puedo continuar desarrollando mi aplicación, ¡increíble! – JussT
Una cosa a tener en cuenta es que debe pasar ese nulo cuando se infla, porque si intenta adjuntarlo a un grupo de vista, inflate() devolverá el grupo de vista y su findViewById aún devolverá la primera instancia del id. No el uno nuevo. – MikeHelland
@mikethematrix En realidad, ahora me doy cuenta de que pasar nulo es el enfoque equivocado.De hecho, debe pasar el diseño principal en, pero también pasar 'falso' como el último parámetro para evitar adjuntarlo al diseño de inmediato (lo que le permite obtener una referencia). He actualizado la respuesta. – kcoppock