动态创建按钮

时间:2012-11-02 09:45:44

标签: android widget

嘿伙计们需要一些帮助........我的目的是开发一个只包含一个按钮的应用程序......点击它之后必须在屏幕上动态创建另一个按钮..... ..

这是我的代码......

        public void onClick(View v) {
            // TODO Auto-generated method stub
            Button bee=new Button(getBaseContext());
            bee.setText("hello:");
             RelativeLayout a;
            a=(RelativeLayout)findViewById(R.layout.activity_main);
    a.addView(bee,new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));
        }
    });

此代码没有错误,但在执行时说“不幸的是'myapplication'已停止”....

请帮助人..(我的唯一目的是动态创建小部件,因此尝试了dis program)。如果你有任何其他建议请发表评论

5 个答案:

答案 0 :(得分:1)

 a=(RelativeLayout)findViewById(R.layout.activity_main);

activity_main是一个布局,而不是RelativeLayout小部件!

你应该使用

 a=(RelativeLayout)findViewById(R.id.my_relative_layout);

请发布堆栈跟踪(logcat),以便您获得更好更快的答案。

答案 1 :(得分:0)

您正试图“找到”不存在的布局!请确保您已定义具有有效ID的RealtiveLayout,然后执行

a=(RelativeLayout)findViewById(R.id.valid_layout_id);

而不是

a=(RelativeLayout)findViewById(R.layout.activity_main);

答案 2 :(得分:0)

试试这个。

RelativeLayout rLayout = (RelativeLayout )findViewById(R.id.relativeLayout); // Here this should be id of your relative layout.
Button btn = new Button(this);
rLayout.addView(btn);

答案 3 :(得分:0)

你找到的是id而不是布局

所以改变这一行:

a=(RelativeLayout)findViewById(R.id.activity_main); 

答案 4 :(得分:0)

尝试使用此代码我认为您只是因为没有正确设置参数而遇到问题所以请检查此代码 -

 LinearLayout container = (LinearLayout)findViewById(R.id.container);

    Button btn = new Button(this);
    LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
      LinearLayout.LayoutParams.MATCH_PARENT, 
      LinearLayout.LayoutParams.WRAP_CONTENT);
    btn.setLayoutParams(lp);

    container.addView(btn);