Kotlin - Android 我们可以在 Class 上实现 OnClickListener 吗?
Kotlin - Android can we implement OnClickListener on Class?
我刚开始使用 Kotlin,如果我在 Activity Class
上实现 onClick,它似乎不会触发
class MainActivity : AppCompatActivity(), View.OnClickListener{
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
tvTitle.text = "Hi There"
// tvTitle.setOnClickListener { this } // NOT WORKING??
tvTitle.setOnClickListener { doSomething() }
}
override fun onClick(v: View) {
Log.d("click", "Hello")
}
fun doSomething(){
Log.d("do", "Something")
}
}
我正在使用 Android Studio 3.0,kotlin_version 为 1.1.51,提前致谢
首先尝试 println("Something")。
试试这个
class MainActivity : AppCompatActivity(), View.OnClickListener{
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
tvTitle.text = "Hi There"
tvTitle.setOnClickListener(this)
// tvTitle.setOnClickListener { doSomething() }
}
override fun onClick(v: View) {
Log.d("click", "Hello")
}
fun doSomething(){
Log.d("do", "Something")
}
}
你可以这样试试
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val tvTitle = findViewById<TextView>(R.id.tvTitle)
tvTitle.setText("Hello Kotlin")
tvTitle.setOnClickListener(object : View.OnClickListener{
override fun onClick(v: View?) {
Toast.makeText(this@MainActivity,"You Clicked on " + tvTitle.text.toString(),Toast.LENGTH_SHORT).show()
}
})
}
这是我的科特林代码:
import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import android.view.View
import android.widget.LinearLayout
import android.widget.Toast
class Activity_T : AppCompatActivity(), View.OnClickListener {
private var linear_exit: LinearLayout? = null
private var linear_history: LinearLayout? = null
private var linear_recipe: LinearLayout? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
initView()
setOnClicks()
}
private fun setOnClicks() {
linear_exit!!.setOnClickListener(this)
linear_history!!.setOnClickListener(this)
linear_recipe!!.setOnClickListener(this)
}
private fun initView() {
linear_exit = findViewById(R.id.linear_exit)
linear_history = findViewById(R.id.linear_history)
linear_recipe = findViewById(R.id.linear_recipe)
}
override fun onClick(v: View) {
val item_id = v.id
when (item_id) {
R.id.linear_recipe -> Toast.makeText(this, "recipe", Toast.LENGTH_SHORT).show()
R.id.linear_history -> Toast.makeText(this, "history", Toast.LENGTH_SHORT).show()
R.id.linear_exit -> Toast.makeText(this, "exit", Toast.LENGTH_SHORT).show()
}
}
}
这是我的 xml 布局的一部分,具有点击次数:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_alignParentBottom="true">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@+id/linear_exit"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="10dp"
android:layout_weight="1"
android:background="@color/border_green"
android:gravity="center">
<net.kibotu.heartrateometer.utils.MyTextView
android:textSize="13sp"
android:textColor="@android:color/white"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/exit" />
</LinearLayout>
<LinearLayout
android:id="@+id/linear_history"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="10dp"
android:layout_weight="1"
android:background="@color/border_green"
android:gravity="center">
<net.kibotu.heartrateometer.utils.MyTextView
android:textSize="13sp"
android:textColor="@android:color/white"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/history" />
</LinearLayout>
<LinearLayout
android:id="@+id/linear_recipe"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="10dp"
android:layout_weight="1"
android:background="@color/border_green"
android:gravity="center">
<net.kibotu.heartrateometer.utils.MyTextView
android:textSize="13sp"
android:textColor="@android:color/white"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/recipe" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
我刚开始使用 Kotlin,如果我在 Activity Class
上实现 onClick,它似乎不会触发class MainActivity : AppCompatActivity(), View.OnClickListener{
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
tvTitle.text = "Hi There"
// tvTitle.setOnClickListener { this } // NOT WORKING??
tvTitle.setOnClickListener { doSomething() }
}
override fun onClick(v: View) {
Log.d("click", "Hello")
}
fun doSomething(){
Log.d("do", "Something")
}
}
我正在使用 Android Studio 3.0,kotlin_version 为 1.1.51,提前致谢
首先尝试 println("Something")。
试试这个
class MainActivity : AppCompatActivity(), View.OnClickListener{
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
tvTitle.text = "Hi There"
tvTitle.setOnClickListener(this)
// tvTitle.setOnClickListener { doSomething() }
}
override fun onClick(v: View) {
Log.d("click", "Hello")
}
fun doSomething(){
Log.d("do", "Something")
}
}
你可以这样试试
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val tvTitle = findViewById<TextView>(R.id.tvTitle)
tvTitle.setText("Hello Kotlin")
tvTitle.setOnClickListener(object : View.OnClickListener{
override fun onClick(v: View?) {
Toast.makeText(this@MainActivity,"You Clicked on " + tvTitle.text.toString(),Toast.LENGTH_SHORT).show()
}
})
}
这是我的科特林代码:
import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import android.view.View
import android.widget.LinearLayout
import android.widget.Toast
class Activity_T : AppCompatActivity(), View.OnClickListener {
private var linear_exit: LinearLayout? = null
private var linear_history: LinearLayout? = null
private var linear_recipe: LinearLayout? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
initView()
setOnClicks()
}
private fun setOnClicks() {
linear_exit!!.setOnClickListener(this)
linear_history!!.setOnClickListener(this)
linear_recipe!!.setOnClickListener(this)
}
private fun initView() {
linear_exit = findViewById(R.id.linear_exit)
linear_history = findViewById(R.id.linear_history)
linear_recipe = findViewById(R.id.linear_recipe)
}
override fun onClick(v: View) {
val item_id = v.id
when (item_id) {
R.id.linear_recipe -> Toast.makeText(this, "recipe", Toast.LENGTH_SHORT).show()
R.id.linear_history -> Toast.makeText(this, "history", Toast.LENGTH_SHORT).show()
R.id.linear_exit -> Toast.makeText(this, "exit", Toast.LENGTH_SHORT).show()
}
}
}
这是我的 xml 布局的一部分,具有点击次数:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_alignParentBottom="true">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@+id/linear_exit"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="10dp"
android:layout_weight="1"
android:background="@color/border_green"
android:gravity="center">
<net.kibotu.heartrateometer.utils.MyTextView
android:textSize="13sp"
android:textColor="@android:color/white"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/exit" />
</LinearLayout>
<LinearLayout
android:id="@+id/linear_history"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="10dp"
android:layout_weight="1"
android:background="@color/border_green"
android:gravity="center">
<net.kibotu.heartrateometer.utils.MyTextView
android:textSize="13sp"
android:textColor="@android:color/white"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/history" />
</LinearLayout>
<LinearLayout
android:id="@+id/linear_recipe"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="10dp"
android:layout_weight="1"
android:background="@color/border_green"
android:gravity="center">
<net.kibotu.heartrateometer.utils.MyTextView
android:textSize="13sp"
android:textColor="@android:color/white"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/recipe" />
</LinearLayout>
</LinearLayout>
</LinearLayout>