我有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
在我的Activity中的样子。任何的想法?
在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)
不要实现多个侦听器,只需像这样实现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
据我所知,您希望在任何按钮单击和每个按钮单击的行为上都有默认行为。
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
s附加到你的Button
s。在你的constructor
的MainActivity
,
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
button1.setOnClickListener(this)
button2.setOnClickListener(this)
button3.setOnClickListener(this)
button4.setOnClickListener(this)
}