按钮上的多个单击侦听器

Ana*_*put 5 java android onclick button kotlin

我想知道如何向XML定义的按钮中添加多个单击事件,就像以前在Java中一样,我们实现了View.onClickListenerinterface并完成了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;
    }

}
Run Code Online (Sandbox Code Playgroud)

我正在用新的Kotlin开发一个基本的计算器应用程序,但是Kotlin似乎没有这样的规定,相反,我的代码看起来太冗长,因为我将事件分别附加到所有按钮上。
有人可以告诉我在Kotlin如何做同样的事情吗?谢谢

Kha*_*rda 5

是的,在 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 */}
        }
    }
}
Run Code Online (Sandbox Code Playgroud)


roc*_*tar 5

您可以尝试以下代码:

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 -> {}
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我希望这对你有帮助。


Sud*_*h R 5

对于中的多个onClickListeners kotlin (version:1.1.60),以下内容对我有所帮助。希望它对其他人也有用。

实施OnClickListener至以下活动:

class YourActivity : AppCompatActivity(), View.OnClickListener
Run Code Online (Sandbox Code Playgroud)

将您的按钮设置在onCreate()

val button = findViewById<Button>(R.id.buttonId)
Run Code Online (Sandbox Code Playgroud)

并分配onclick给按钮onCreate()

button.setOnClickListener { onClick(button) }
Run Code Online (Sandbox Code Playgroud)

并在的替代方法中onClick()

 override fun onClick(v: View) {
    when (v.id) {
        R.id.buttonId -> { //your code  }
        ..
        ..
        ..
        else -> { //your code  }
   }
 }
Run Code Online (Sandbox Code Playgroud)


Rah*_*hul 4

首先OnClickListener在你的中实现Activity,比如

class MainActivity : Activity , OnClickListener
Run Code Online (Sandbox Code Playgroud)

然后重写它的实现,例如

func onClick(v:View) {  
   //use when here like
   case R.id.youview -> {
   // do your work on click of view
    }
Run Code Online (Sandbox Code Playgroud)

不要忘记在您的View.

  yourView.setOnClickListener(this)
Run Code Online (Sandbox Code Playgroud)

或者为了更好地理解一步一步 -

  1. OnClickListener在您的Activity.

  2. 编译器会要求你实现重写的方法。实施这些。

  3. 复制粘贴您在onClick方法中编写的java代码,该代码可以由kotlin本身转换或写下when条件。