Ich habe ein Problem in Bezug auf das Aufblasen und die Wiederverwendung der gleichen TextView.
Es ist wie es versucht, die gleiche Textansicht immer wieder zu überschreiben oder etwas und es kann nicht tun? HierVerwenden Sie Ansicht, um mehrmals aufzublasen
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);
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 bekommen und seine auf der Reihe: 51, die 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)
Vielen Dank! Habe jetzt seit ungefähr 2 Stunden damit gesessen, abit noobish. Aber jetzt kann ich mich weiter entwickeln, super !! – JussT
Eine Sache zu beachten ist, dass Sie diese Null übergeben müssen, wenn Sie aufblasen, denn wenn Sie versuchen, es an eine Ansichtsgruppe anzuhängen, gibt inflate() die Ansichtsgruppe zurück und Ihre findViewById gibt immer noch die erste Instanz der ID zurück ein neues. – MikeHelland
@mikethematrix Eigentlich ist mir jetzt klar, dass das Überschreiten von Null der falsche Ansatz ist.Sie sollten das übergeordnete Layout tatsächlich übergeben, aber auch "false" als letzten Parameter übergeben, um zu verhindern, dass es sofort an das Layout angehängt wird (damit Sie einen Verweis darauf erhalten). Ich habe die Antwort aktualisiert. – kcoppock