2013-03-31 2 views
0

Я пытаюсь написать приложение, добавляющее кнопки динамически. Приложение получает изображение с сервера и добавляет кнопку (теперь нет функциональности).Динамическое добавление кнопок в linearView

Основное направление деятельности - проведение линейной компоновки, которая будет содержать кнопки и поверхностный вид, которые будут получать изображения и будут создавать кнопки в основном действии.

Проблема в том, что после того, как первое изображение было получено, сбой приложения при попытке добавить новую кнопку в представление.

Это код вида поверхности:

public void run() { 
     while (isRunning){ 
      if (!ourHolder.getSurface().isValid()){ 
       continue; 
      } 

      Canvas canvas = ourHolder.lockCanvas(); // Semafor for the canvas 
      canvas.drawRGB(20,20,80); 

      if (getNumOfBoards() > 0){ 
       canvas.drawBitmap(getCurrentBoard(), 0, 0, null); 
      } 

      ourHolder.unlockCanvasAndPost(canvas); 
     } 
    } 

Это Основная активность добавить код кнопки

public void addButtons(int numOfButton) { 
       // create patameter 
       LinearLayout.LayoutParams p = new LinearLayout.LayoutParams(
        LinearLayout.LayoutParams.WRAP_CONTENT, 
        LinearLayout.LayoutParams.WRAP_CONTENT 
       ); 

       // create new button 
       Button newbutton = new Button(this); 

       // set background color 
       newbutton.setBackgroundColor(Color.BLUE); 

       // set width and height 
       newbutton.setWidth(30); 
       newbutton.setHeight(20); 

       // set position 
       newbutton.setY((float)numOfButton*20); 
       newbutton.setX(0); 

       // set text 
       newbutton.setText("new button"); 

       // add button to the layout 
       buttons.addView(newbutton,p);// **the application crash here** 
    } 
+1

Какое сообщение об ошибке (LogCat) из аварии? – Axarydax

+1

Можете ли вы попробовать с этим, я не уверен. замените это 'buttons.addView (newbutton, p);' с 'p.addView (newbutton);' – VenomVendor

+0

Что такое «кнопки»? Вы инициализировали его в onCreate? – Taras

ответ

0

Благодаря пути андроид обрабатывает деятельность, конструктор onCreate не гарантирован иметь вызывается каждый раз, когда выполняется addButtons метод (см. Activity Lifecycle Section на developer.android.com)

Вам лучше найти buttons LinearLayout

LinearLayout buttons = (LinearLayout) findViewById(R.id.LayoutButtons); 

в addButtons и добавить новую кнопку.

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