Nutzen Sie zum aufblasen mehrere Male
Ich habe ein paar problem mit dem aufblasen und wieder mit der gleichen TextView.
Seine wie seine versuche zu überschreiben, die denselben textview über und über wieder oder so etwas und kann es nicht tun?
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);
Hier ist die 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" />
Dies ist der Fehler im sich und seinen row: 51, das ist:
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)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bist du eigentlich nie hinzufügen jeder Blick auf Ihre Tätigkeit. Sie erstellen neue TableRows und hinzufügen TextViews zu Ihnen, aber Sie sind niemals das hinzufügen der Zeilen nichts. Vorausgesetzt, Sie haben ein TableLayout in
R.layout.days_monday_inflate
, sollten Sie zunächst einen Verweis auf das view (TableLayout layout = (TableLayout)mainLayout.findViewById(R.id.my_table_layout_id)
) und dann fügen Sie jede Zeile, um das TableLayout:Obwohl ich würde empfehlen die Einrichtung von Ihrem layout vollständig in XML, wenn überhaupt möglich, es sei denn, Bedarf dynamisch. Auch, wenn Sie nur das hinzufügen einer TextView pro Zeile, du bist besser dran, nur mit einem LinearLayout, würde ich vorschlagen.
false
als letzten parameter an, um zu verhindern, befestigen Sie es auf das layout sofort (so dass Sie einen Verweis darauf). Ich habe aktualisiert die Antwort.In meinem Fall, setTag(ich) hat nicht funktioniert, was funktioniert hat, war das ändern der id nach dem aufblasen das layout, aber vor dem hinzufügen der übergeordneten Ansicht wie diese:
Sie versuchen, das hinzufügen einer einzelnen TextView, um mehrere Zeilen, die ist, was die Ursache für deinen Fehler. Sie müssen reinflate layout_number jeder Zeit eine neue TextView.
Ich bin mir nicht sicher, was enthalten ist in Ihre layout_number Datei, aber basierend auf dem, was Sie hier haben, es scheint, dass Sie möglicherweise besser bedient, die zum erstellen von neuen TextViews innerhalb der Schleife ala
number = new TextView(this);
Und der Fehler ist auf Zeile 50 jetztnumber.setText(Integer.toString(i));
Versuchen Sie dies:
R.layout.days_monday_inflate
?