setOnClickListener以编程方式ERROR为按钮

时间:2014-10-01 17:50:30

标签: android button

我正在为一个项目制作一个简单的GPA计算器,我们先用xml完成​​它,现在我的教授想要动态地想要它。我有4个textviews,4个edittext和1个按钮。一切正常并运行,但是当我尝试setOnClickListener()时,程序将崩溃。如何使按钮以编程方式工作。 这是我正在尝试的。

     android.widget.LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
    LinearLayout layout = new LinearLayout(this);
    layout.setOrientation(LinearLayout.VERTICAL);

    // button
    Button button1 = new Button(this);
    final int button1id = View.generateViewId();
    button1.setId(button1id); // id
    button1.setText("Send Data");
    button1.setLayoutParams(params);
    layout.addView(button1);
    button1 = (Button) findViewById(button1id);

    OnClickListener clicks = new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            if(v.getId() == button1id){
                Intent i = new Intent(getApplicationContext(), SecondActivity.class);
                startActivity(i);

            }

        }
    };

然后当我打电话给它时,它给了我错误。

button1.setOnClickListener(clicks);

提前致谢。

2 个答案:

答案 0 :(得分:4)

不要findViewById。只需简单的电话:

button1.setOnclickListner(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

                Intent i = new Intent(getApplicationContext(), SecondActivity.class);
                startActivity(i);
        }
    }); 

这将解决您的问题。

答案 1 :(得分:0)

不再需要按id调用按钮也可以将View.OnClickListener更改为OnClickListener

    android.widget.LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
    LinearLayout layout = new LinearLayout(this);
    layout.setOrientation(LinearLayout.VERTICAL);

    // button
    Button button1 = new Button(this);
    final int button1id = View.generateViewId();
    button1.setId(button1id); // id
    button1.setText("Send Data");
    button1.setLayoutParams(params);
    layout.addView(button1);
    button1.setOnClickListener(clicks)

    OnClickListener clicks = new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            if(v.getId() == button1id){
                Intent i = new Intent(getApplicationContext(), SecondActivity.class);
                startActivity(i);

            }

        }
    };