2016-05-20 3 views
0

Ich habe ein Fragment, das viele Schaltflächen enthält, die dynamisch zum Layout hinzugefügt wurden. Da sie dynamisch hinzugefügt wurden, habe ich ihnen keine IDs zugewiesen, um sie zu referenzieren.So entfernen Sie alle Widgets aus einem Fragment onResume

In meiner Hauptaktivität onResume möchte ich in der Lage sein, alle Widgets in diesem bestimmten Fragment zu löschen, ohne auf jede Schaltfläche per ID verweisen zu müssen, um sie zu entfernen. Kann ich das irgendwie machen?

Möglicherweise den folgenden Befehl ausführen, sondern auf alle Tasten angewendet, ohne besondere IDs Referenzierung:

button.setVisibility(View.GONE); 

EDIT:

for (int i = 0; i < R.layout.grid_cell.getCount(); i++) { 
View v = R.layout.grid_cell.getChildAt(i); 
R.layout.grid_cell.removeView(v); 
// or you can check the view 
//if (v instanceof Button) { 
// layout.removeView(v); 
//} 
} 
+0

Werden sie zu einer Array-Liste hinzugefügt und erstellen Sie eine einfache Schleife? –

Antwort

0

in Ihrem onResume()

for (int i = 0; i < layout.getChildCount(); i++) { 
     View v = layout.getChildAt(i); 
     layout.removeView(v); 
     // or you can check the view 
     //if (v instanceof Button) { 
     // layout.removeView(v); 
     //} 
    } 

Bearbeiten Sie "Layout" ist keine Layoutdatei.

RelativeLayout layout= (RelativeLayout) findViewById(R.id.root); 

Wenn Sie RecyclerView verwenden, müssen Sie die Ansicht jedes Zeilenelements zurückgeben. Wenn Sie z. B. Ansichten in onResume() entfernen möchten, können Sie die Ansicht wie Ihren eigenen itemClickListener in Aktivität zurückversetzen. Als Ergebnis ist die Ansicht die Stammansicht Ihrer Zeile. Und dann können Sie view.getChildCount() aufrufen und in eine Schleife einfügen. Es spielt keine Rolle GridLayout oder andere. Das Denken ist das Gleiche.

+0

vielen dank für ihre antwort !! (Ich habe oben in der FRAGE BEARBEITEN). Was verwende ich für "Layout"? Ich verwende eine ReclyerView und GridLayout, um meine dynamischen Schaltflächen zu platzieren. Momentan kann es keine Methode lösen, die ich bei "R.layout.grid_cell" verwende, wo grid_cell ist, wo ich meine Schaltflächenansicht für die Verwendung im Rasterlayout –

+0

sorry für die späte Antwort ablege. überprüft edited. – eralp