我正在尝试编写一个动态添加按钮的应用程序。 应用程序从服务器接收图像并添加按钮(暂时没有功能)。
主要活动是保持线性布局,其中包含按钮和将接收图像的表面视图,并将在主要活动中创建按钮。
问题是,在收到第一张图片后,尝试向视图添加新按钮时应用程序崩溃。
这是表面视图代码:
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**
}
答案 0 :(得分:0)
由于android处理活动的方式,每次执行onCreate
方法时都不保证构造函数addButtons
被调用
(请参阅developer.android.com上的Activity Lifecycle Section
)
您最好找到buttons
LinearLayout
LinearLayout buttons = (LinearLayout) findViewById(R.id.LayoutButtons);
在addButtons
中并添加新按钮。