解决方案:为对应Button设置点击事件
方案一:在Activity中为按钮添加点击事件
startServiceButton.setOnClickListener(this)
方案二:在布局文件中为按钮添加点击时调用的方法
<Button
android:id="@+id/stopServiceButton"
...
android:text="stopService" />
页面布局只有两个按钮,Activity如下,希望点击两个按钮时能够显示Toast但是运行时并没有达到预期效果
public class ServiceActivity extends Activity implements View.OnClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_service);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.startServiceButton:
Toast.makeText(this, "startService...", Toast.LENGTH_SHORT).show();
break;
case R.id.stopServiceButton:
Toast.makeText(this, "stopServiceButton...", Toast.LENGTH_SHORT).show();
break;
default:
break;
}
}
}
发现问题如下:页面中的两个Button并没有设置点击事件,想当然以为Activity
实现了OnClickListener
之后,点击对应页面就能调用onClick
方法处理点击事件,其实并不是…
修改之后的代码如下,能够实现目标效果。
public class ServiceActivity extends Activity implements View.OnClickListener {
Button startServiceButton;
Button stopServiceButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_service);
startServiceButton = findViewById(R.id.startServiceButton);
stopServiceButton = findViewById(R.id.stopServiceButton);
startServiceButton.setOnClickListener(this);
stopServiceButton.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.startServiceButton:
Toast.makeText(this, "startService...", Toast.LENGTH_SHORT).show();
break;
case R.id.stopServiceButton:
Toast.makeText(this, "stopServiceButton...", Toast.LENGTH_SHORT).show();
break;
default:
break;
}
}
}