科特林多点击按钮上的听众
所以对于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)
或为了更好的理解一步一步 –
-
在您的
Activity
实施OnClickListener
。 -
编译器会要求你执行被覆盖的方法。 实现这些。
-
复制粘贴你在
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
。