/ / Schleifen mit setLayoutParams - ClassCastException - Java, Android, Android-Layout

Looping mit setLayoutParams - ClassCastException - Java, Android, Android-Layout

-AKTUALISIEREN-

Ich habe getan, wie von Agarwal vorgeschlagen, und habe jetzt diesen Fehler:

04-21 11:42:01.807: E/AndroidRuntime(1456): java.lang.ClassCastException: android.view.ViewGroup$LayoutParams cannot be cast to android.widget.LinearLayout$LayoutParams

Ich benutze diesen Code, um die Breite von 15 Knöpfen dynamisch einzustellen. Und Sie haben es erraten, es funktioniert nicht. Der Fehler tritt in der for Schleife, aber ich bin nicht sicher, warum.

    Button[] buttons = new Button[16];
buttons[0] = (Button)findViewById(R.id.root2);
buttons[1] = (Button)findViewById(R.id.root3);
/* blah blah blah */
buttons[13] = (Button)findViewById(R.id.root15);
buttons[14] = (Button)findViewById(R.id.root16);

LayoutParams lp = new LayoutParams(widthOfButtons,LayoutParams.WRAP_CONTENT);

for(int x = 0; x < 16; x ++){
buttons[x].setLayoutParams(lp);
}

Danke für jede Hilfe. (Und wenn sich jemand einen besseren Weg ausdenken kann, um das zu füllen buttons[] Variable, das wäre sehr dankbar.)

Antworten:

3 für die Antwort № 1
for(int x = 0; x < 16; x ++){
buttons[x].setLayoutParams(lp);
}

Die obige Schleife wird 16 Mal wiederholt, und Sie haben nur 15 Schaltflächen eingerichtet. Fügen Sie entweder eine Schaltfläche hinzu oder ändern Sie x <15. Wenn Sie x <15 ändern, ändern Sie auch das Folgende

Taste [] Tasten = neu Taste [15];


1 für die Antwort № 2

Ich habe es folgendermaßen behoben:

LayoutParams lp = new LinearLayout.LayoutParams(widthOfButtons,LayoutParams.WRAP_CONTENT);

for(int x = 0; x < 15; x ++){
buttons[x].setLayoutParams(lp);
}

Bekommen LayoutParams von LinearLayout.