科特林多点击按钮上的听众

所以对于kotlin来说,我想知道如何将多个点击事件添加到在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没有这样的规定,而是我的代码看起来太长而冗长,因为我将事件附加到所有按钮单独。 有人能告诉我如何在科特林做同样的方式吗? 谢谢

首先在你的Activity实现OnClickListener

 class MainActivity : Activity , OnClickListener 

然后重写它的实现

 public void onClick(View v) { //use when here like case R.id.youview -> { // do your work on click of view } 

不要忘记在你的View上设置clicklistener。

  yourView.setOnClickListener(this) 

或为了更好的理解一步一步 –

  1. 在您的Activity实施OnClickListener

  2. 编译器会要求你执行被覆盖的方法。 实现这些。

  3. 复制粘贴你在onClick方法里写的java代码,可以通过kotlin本身转换或者when条件写下来。

对于kotlin多个kotlin (version:1.1.60) ,以下帮助我。 希望这对其他人也有用。

实现OnClickListener的活动,如:

 class YourActivity : AppCompatActivity(), View.OnClickListener 

onCreate()设置你的按钮:

 val button = findViewById 

并分配onclick onCreate()上的按钮:

 button.setOnClickListener { onClick(button) } 

并在onClick()的重写方法中:

  override fun onClick(v: View?) { when (v?.id) { R.id.buttonId -> { //your code } .. .. .. else -> { //your code } } } 

是的,在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 */} } } } 

你可以试试下面的代码:

 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 -> {} } } } 

我希望这对你有所帮助。

尝试下面这样。

  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

这段代码适用于我:

 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