2012-04-21 2 views
0

-UPDATE-Looping с setLayoutParams - ClassCastException

я сделал, как предложил Агарвал, и теперь эта ошибка:

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

Я использую этот код, чтобы динамически установить ширину 15 кнопок , И, как вы догадались, это не сработает. Ошибка происходит в цикле for, но я не уверен, почему.

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); 
    } 

Благодарим за любую помощь. (И если кто-то может придумать лучшего способа, чтобы заполнить переменную buttons[], что будет очень высоко ценится.)

+0

у вас есть 15 или 16 кнопок –

ответ

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

выше repaeat петля 16 раз, и вы были instilized только 15 кнопок либо добавить кнопку или изменить x < 15. при изменении x < 15 затем также изменить ниже

Button [] buttons = new Button [15];

+0

Спасибо за это. Я изменил его на 'x <15' и теперь получил новую ошибку. Не могли бы вы взглянуть? Я обновил вопрос. – ACarter

+0

editted посмотреть сообщение –

+0

Я слишком много открыл массив, не так ли, но у меня все еще проблема. Спасибо за вашу помощь. – ACarter

1

Я установил его с помощью этого:

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

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

Получение LayoutParams из LinearLayout.

Смежные вопросы