我想知道如何将多个单击事件添加到XML中定义的按钮,如前所述,在Java中,我们实现了View.onClickListener
接口,并在onClick
方法中完成了其余的工作。 />
例如:
@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;
}
}
我正在使用新的Kotlin制作一个基本的计算器应用程序,但似乎Kotlin没有这样的规定,而我的代码看起来太长而且冗长,因为我将事件单独附加到所有按钮。
有人能告诉我如何在Kotlin以同样的方式做事吗?感谢
答案 0 :(得分:3)
首先在OnClickListener
中实施Activity
,例如
class MainActivity : Activity , OnClickListener
然后覆盖它的实现,如
func onClick(v:View) {
//use when here like
case R.id.youview -> {
// do your work on click of view
}
别忘了在View
上设置clicklistener。
yourView.setOnClickListener(this)
或者为了更好地理解一步一步 -
在OnClickListener
。
Activity
编译器会要求您实现覆盖方法。实施这些。
复制粘贴您在onClick
方法中编写的java代码,该代码可以由kotlin本身转换或写下when
条件。
答案 1 :(得分:3)
对于sort_order
kotlin
中的多个onClickListener,以下内容对我有所帮助。希望它对其他人也有用。
将(version:1.1.60)
实施为以下活动:
OnClickListener
在class YourActivity : AppCompatActivity(), View.OnClickListener
中设置按钮:
onCreate()
并将val button = findViewById<Button>(R.id.buttonId)
分配给onclick
中的按钮:
onCreate()
以及button.setOnClickListener { onClick(button) }
的覆盖方法:
onClick()
答案 2 :(得分:2)
是的,在Kotlin你可以这样做:
view.setOnClickListener(object : View.OnClickListener {
override fun onClick(v: View?) {
when(v.id) {
R.id.imgBack -> {/* do your code */}
R.id.twoButton -> {/* do your code */}
R.id.threeButton -> {/* do your code */}
else -> {/* do your code */}
}
}
}
答案 3 :(得分:2)
您可以尝试以下代码:
class Testing:AppCompatActivity(), View.OnClickListener {
private val mButton1:Button
private val mButton2:Button
protected fun onCreate(savedInstanceState:Bundle) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_testing)
mButton1 = findViewById(R.id.btn_click) as Button
mButton2 = findViewById(R.id.btn_click1) as Button
mButton1.setOnClickListener(this)
mButton2.setOnClickListener(this)
}
fun onClick(view:View) {
when (view.getId()) {
R.id.btn_click -> {
Toast.makeText(this, "button 1", Toast.LENGTH_SHORT).show()
}
R.id.btn_click1 -> {
Toast.makeText(this, "button 2", Toast.LENGTH_SHORT).show()
}
else -> {}
}
}
}
我希望这对你有所帮助。
答案 4 :(得分:2)
此代码对我有用:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
imgBack.setOnClickListener(this)
twoButton.setOnClickListener(this)
threeButton.setOnClickListener(this)
}
override fun onClick(view:View) {
when (view.id) {
R.id.imgBack -> {
Toast.makeText(this, "imgBack", Toast.LENGTH_SHORT).show()
}
R.id.twoButton -> {
Toast.makeText(this, "twoButton", Toast.LENGTH_SHORT).show()
}
else -> {}
}
}
不要忘记班上的View.OnClickListener
工具。
答案 5 :(得分:-1)
尝试下面这样的。
public class MainActivity extends Activity implements View.OnClickListener{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Button xyz = (Button) findViewById(R.id.xyz);
xyz.setOnClickListener(this);
}
@Override
public void onClick(View v) {
}}
https://androidacademic.blogspot.in/2016/12/multiple-buttons-onclicklistener-android.html
的详细信息