如何在活动中实现OnClickListener?
问题描述:
在我的应用程序中,我有一个3按钮的简单活动,为了不为每个按钮设置单独的OnClickListener,我决定在我的活动中实现它,但它不起作用。如何在活动中实现OnClickListener?
这里是我的代码
public class MainActivity extends Activity implements View.OnClickListener{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
private void CheckForViolations(){
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.btnCheck:
CheckForViolations();
break;
case R.id.btnViewAllViolations:
Intent violationListIntent = new Intent(MainActivity.this,ViolationListActivity.class);
startActivity(violationListIntent);
break;
case R.id.btnSettings:
Intent settingsIntent = new Intent(MainActivity.this, ViolationListActivity.class);
startActivity(settingsIntent);
break;
}
}
}
我失去了一些东西,因为程序甚至不OnClick方法停车时调试我的应用程序。
答
您必须将视图的侦听器设置为活动。所以,它应该是这样的:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
View btnCheck = findViewById(R.id.btnCheck);
btnCheck.setOnClickListener(this);
View btnViewAllViolations = findViewById(R.id.btnViewAllViolations);
btnViewAllViolations.setOnClickListener(this);
View btnSettings = findViewById(R.id.btnSettings);
btnSettings.setOnClickListener(this);
}
答
您需要findViewbyId
您的按钮和setOnClickListener
他们。
例子:
btnCheck = (Button) findViewById(R.id.btnCheck);
btnCheck.setOnClickListener(this);
答
重写的onClick()是正确的,你的MainActivity正确实现OnClickListener。
你只需要注册每个按钮。例如:
Button goButton = (Button) findViewById(R.id.buttonGo);
goButton.setOnClickListener(this);
答
最后在onCreate
方法中添加以下行。
创建Button
对象uning findViewbyId
和setOnClickListener
到该对象
Button b1 = (Button) findViewById(R.id.btnCheck);
Button b2 = (Button) findViewById(R.id.btnViewAllViolations);
Button b3 = (Button) findViewById(R.id.btnSettings);
b1 .setOnClickListener(this);
b2 .setOnClickListener(this);
b3 .setOnClickListener(this);
答
您需要声明Button
到setOnClickListener
。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btnCheck=(Button)findViewById(R.id.btnCheck1);
Button btnViewAllViolations=(Button)findViewById(R.id.btnViewAllViolations1);
Button btnSettings=(Button)findViewById(R.id.btnSettings1);
//Where btnCheck1,btnViewAllViolations1,btnSettings1 are ids in xml;
btnCheck.setOnClickListener(this);
btnViewAllViolations.setOnClickListener(this);
btnSettings.setOnClickListener(this);
}
发布您的布局xml文件,即activity_main.xml – Amy 2014-12-06 11:26:59