动态添加按钮到linearView

时间:2013-03-31 14:33:41

标签: java android button android-linearlayout

我正在尝试编写一个动态添加按钮的应用程序。 应用程序从服务器接收图像并添加按钮(暂时没有功能)。

主要活动是保持线性布局,其中包含按钮和将接收图像的表面视图,并将在主要活动中创建按钮。

问题是,在收到第一张图片后,尝试向视图添加新按钮时应用程序崩溃。

这是表面视图代码:

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 个答案:

答案 0 :(得分:0)

由于android处理活动的方式,每次执行onCreate方法时都不保证构造函数addButtons被调用 (请参阅developer.android.com上的Activity Lifecycle Section

您最好找到buttons LinearLayout

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

并添加新按钮。