我正在为一个项目制作一个简单的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);
提前致谢。
答案 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);
}
}
};