1. 程式人生 > >用Kotlin實現Android點選事件

用Kotlin實現Android點選事件

近期,Google宣佈Kotlin成為了Android一級開發語言。於是就剛剛簡單的研究了一下,查資料的時候發現現成的資料還是很少的,於是決定自己記錄一下,方便以後檢視,也供其他人一個參考。

在android中,點選事件大致分為三種寫法:

1. 匿名內部類。
2. Activity實現全域性OnClickListener介面。
3. 指定xml的onClick屬性。

今天用Kotlin實現這三種方式實現點選事件

  • 匿名內部類:這種方式最簡單
    override fun onCreate(savedInstanceState: Bundle?) {
          super.onCreate(savedInstanceState)
          setContentView(R.layout.activity_main)
          bt_click.setOnClickListener {
              Toast.makeText(this
    ,"點選了",Toast.LENGTH_SHORT).show(); } }
    這裡不需要new OnClicklistener。
  • 全域性實現OnClickListener介面:
    class MainActivity : AppCompatActivity(), View.OnClickListener {
      override fun onClick(v: View?) {
          when (v?.id) {
              R.id.bt_click ->
                  Toast.makeText(this, "點選了", Toast.LENGTH_SHORT).show()
          }
      }
    
      override
    fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) bt_click.setOnClickListener(this) } }

    這種方法與java的區別是沒有implements關鍵字表示實現介面。
    when就相當於java中的switch。
    “:”符號改為了“->”。

  • 指定onClick屬性:
    fun click(v: View?) {
          when (v?.id) {
              R.id.bt_click ->
                  Toast.makeText(this
    , "點選了", Toast.LENGTH_SHORT).show() } } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) }
    <Button
          android:id="@+id/bt_click"
          android:layout_width="match_parent"
          android:layout_height="50dp"
          android:onClick="click"
          android:text="點選" />