我有4个按钮,希望有1个onClickListener
来检测单击了哪个按钮(获取按钮的ID)。
我该如何实现?
button1
button2
button3
button4
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
}
我设想像这样创建when
语句:
when (R.id) {
R.id.button1 -> // do something
R.id.button2 -> // do something
R.id.button3 -> // do something
R.id.button4 -> // do something
else -> // do something
}
但是我不确定如何定位“单击的任何按钮”以及onClickListener
在我的活动中的外观。有想法吗?
答案 0 :(得分:0)
MainActivity中的实现界面View.OnClickListener
class MainActivity : AppCompatActivity(), View.OnClickListener
并覆盖onClick
override fun onClick(p0: View?) { when (R.id) { R.id.button1 -> // do something R.id.button2 -> // do something R.id.button3 -> // do something R.id.button4 -> // do something else -> // do something } }
然后写
setOnClickListener(this)
答案 1 :(得分:0)
不要实现多个侦听器,只需实现View.OnClickListener
这样的方法:
public class MainActivity extends Activity implements View.OnClickListener {
}
然后添加此内容:
public class MainActivity extends Activity implements View.OnClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public void onClick(View v) {
// default method for handling onClick Events..
}
}
定义按钮侦听器:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.your_layout);
Button one = (Button) findViewById(R.id.oneButton);
one.setOnClickListener(this); // calling onClick() method
Button two = (Button) findViewById(R.id.twoButton);
two.setOnClickListener(this);
Button three = (Button) findViewById(R.id.threeButton);
three.setOnClickListener(this);
}
然后获取ID并添加点击功能:
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.oneButton:
// do your code
break;
case R.id.twoButton:
// do your code
break;
case R.id.threeButton:
// do your code
break;
default:
break;
}
}
这应该有效。来源:https://stackoverflow.com/a/25905313/9819031
对不起,我不认识Kotlin
答案 2 :(得分:0)
据我了解,您希望任何按钮单击都具有默认行为,而每次按钮单击均具有行为。
View.OnClickListener
插入您的MainActivity
。 class MainActivity : AppCompatActivity(), View.OnClickListener {
onClick(View)
中实施MainAcitivity
方法。在您的MainActivity
中,
override fun onClick(v: View) {
onAnyButtonClick()
when(v.id) {
R.id.button1 -> onButton1Click()
R.id.button2 -> onButton2Click()
R.id.button3 -> onButton3Click()
R.id.button4 -> onButton4Click()
else -> onOtherThanButtonClick()
}
}
OnClickListener
附加到您的Button
中。在您constructor
的{{1}}中,
MainActivity