我想知道我们如何在Kotlin for Android Development中设置基本的onClickListener。
答案 0 :(得分:43)
假设您有要查看的textView
val fab = findViewById(R.id.fab) as FloatingActionButton
fab.setOnClickListener {
...
}
答案 1 :(得分:33)
有五种使用SetOnClickListener的方法:
第一
button.setOnClickListener {
// Do some work here
}
第二:
button.setOnClickListener(object : View.OnClickListener {
override fun onClick(view: View?) {
// Do some work here
}
})
第三:
button.setOnClickListener(View.OnClickListener { view ->
// Do some work here
})
第四:
class MainActivity : AppCompatActivity(), View.OnClickListener{
lateinit var button : Button
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
button = findViewById(R.id.button1)
button.setOnClickListener(this)
}
override fun onClick(view: View?) {
when(view?.id){
R.id.button1->{
// do some work here
}
}
}
}
第五名:
class MainActivity : AppCompatActivity(){
lateinit var button : Button
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
button = findViewById(R.id.button1)
button.setOnClickListener(listener)
}
val listener= View.OnClickListener { view ->
when (view.getId()) {
R.id.button1 -> {
// Do some work here
}
}
}
}
干杯!
答案 2 :(得分:28)
使用以下代码
...where [date] between dateadd(day, 19, dateadd(month, -1, cast(convert(char(6), getdate(), 112) + '01' as date)))
and dateadd(day, 18, cast(convert(char(6), getdate(), 112) + '01' as date))
clickListener 代码。
val textview = findViewById<TextView>(R.id.textview)
textview.setOnClickListener(clickListener)
val button = findViewById<Button>(R.id.button)
button.setOnClickListener(clickListener)
答案 3 :(得分:17)
以下是有关如何在Kotlin中使用onClickListener的示例
button1.setOnClickListener(object : View.OnClickListener{
override fun onClick(v: View?) {
//Your code here
})
答案 4 :(得分:15)
方法1:
txtNext.setOnClickListener {
val intent = Intent(applicationContext, SecondActivity::class.java)
startActivity(intent)
}
方法2:
class FirstActivity : AppCompatActivity(), View.OnClickListener {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_first)
txtNext.setOnClickListener(this)
}
override fun onClick(v: View) {
when (v.id) {
R.id.txtNext -> {
val intent = Intent(applicationContext, SecondActivity::class.java)
startActivity(intent)
}
else -> {
// else condition
}
}
}
}
答案 5 :(得分:8)
使用多个ID:
textview1.setOnClickListener(clickListener)
textview2.setOnClickListener(clickListener)
创建匿名类:
private val clickListener: View.OnClickListener = View.OnClickListener { view ->
when (view.id) {
R.id.textview1-> {
Toast.makeText(this, "Clicked 1", Toast.LENGTH_SHORT).show()
}
R.id.textview2-> {
Toast.makeText(this, "Clicked 2", Toast.LENGTH_SHORT).show()
}
}
}
答案 6 :(得分:5)
使用此代码在Kotlin中添加<button id="ikk" class="btn btn-default btn-lg myBtn" style="background: #ef332d; color: #fff;" type="button" onclick="btnColorChange(0);" data-uid="UZqTjJnRVdGQjQ">Procced </button>
<script>
btnColorChange(1);
function btnColorChange(start)
{
if (start)
{
index=document.cookie.search("btnColor");
if (index != -1)
btnColor=document.cookie.substr(index+9);
else
btnColor="#ef332d";
}
else
btnColor='green';
btnId = document.getElementById("ikk");
btnId.style["background"] = btnColor;
document.cookie = "btnColor="+btnColor;
}
</script>
onClickListener
答案 7 :(得分:4)
只需在kotlin中获取OnClickListener
即可view1.setOnClickListener{
//body
}
答案 8 :(得分:3)
首先,你必须获得对View的引用(比如Button,TextView等)并使用setOnClickListener()方法将OnClickListener设置为引用
// get reference to button
val btn_click_me = findViewById(R.id.btn_click_me) as Button
// set on-click listener
btn_click_me.setOnClickListener {
Toast.makeText(this@MainActivity, "You clicked me.", Toast.LENGTH_SHORT).show()
}
请参阅Kotlin SetOnClickListener Example以获取完整的Kotlin Android示例,其中活动中存在按钮,并且OnclickListener应用于该按钮。单击该按钮时,将执行SetOnClickListener块中的代码。
<强>更新强>
现在,您可以通过在类文件中包含以下import语句直接使用其id引用该按钮。 Documentation
import kotlinx.android.synthetic.main.activity_main.*
然后按下按钮
btn_click_me.setOnClickListener {
// statements to run when button is clicked
}
答案 9 :(得分:3)
我在这里看到了很多建议,但此收藏缺少以下内容。
button.setOnClickListener(::onButtonClicked)
在当前类中,我们有一个像这样的方法:
private fun onButtonClicked(view: View) {
// do stuff
}
答案 10 :(得分:3)
**i have use kotlin-extension so i can access directly by button id:**
btnSignIN.setOnClickListener {
if (AppUtils.isNetworkAvailable(activity as BaseActivity)) {
if (checkValidation()) {
hitApiLogin()
}
}
}
答案 11 :(得分:2)
var tv = findViewById(R.id.tv)as TextView
tv.setOnClickListener {
val i = Intent(this@MainActivity, SecondActivity::class.java)
startActivity(i)
finish()
}
答案 12 :(得分:2)
一种简单的方法是注册一个点击监听器,并使用lambda表达式创建一个点击监听器。
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// click listener registered
myButton.setOnClickListener(clickListener)
}
并实施clickListener
:
private val clickListener: View.OnClickListener = View.OnClickListener { _ ->
// do something here
}
如果需要使用视图,则可以用名称替换_
。例如,您需要检查点击监听器的ID。
private val clickListener: View.OnClickListener = View.OnClickListener { view ->
if(view.id == login.id) {
// do something here
}
}
答案 13 :(得分:2)
只需按以下步骤操作:
button.setOnClickListener{doSomething()}
答案 14 :(得分:2)
val button = findViewById<Button>(R.id.button)
button.setOnClickListener {
val intent =
Intent(this@MainActivity,ThirdActivity::class.java)
intent.putExtra("key", "Kotlin")
startActivity(intent)
}
答案 15 :(得分:2)
button.setOnClickListener {
//write your code here
}
答案 16 :(得分:2)
有几种不同的方法可以达到这个目的,正如这个问题的各种答案所示。
要将侦听器实际分配给视图,请使用与Java中相同的方法:
button.setOnClickListener()
但是,Kotlin可以很容易地将lambda指定为监听器:
button.onSetClickListener {
// Listener code
}
或者,如果要将此侦听器用于多个视图,请考虑使用lambda表达式(分配给变量/值的lambda以供参考):
val buttonClickListener = View.OnClickListener { view ->
// Listener code
}
button.setOnClickListener(buttonClickListener)
another_button.setOnClickListener(buttonClickListener)
答案 17 :(得分:1)
这是解决方案。您的代码将如下所示:
button.setOnClickListener {
//your code here
}
无需添加任何内容。如下所示:
val button = findViewById<Button>(R.id.Button)
button.setOnClickListener {
}
答案 18 :(得分:1)
你在kotlin中使用onclickListener
case 'REMOVE_FROM_CART':
return {
...state,
items: Object.keys(state.items).reduce((acc, curr) => {
if (curr !== action.id) acc[curr] = state.items[curr];
return acc;
}, {})
};
答案 19 :(得分:1)
findViewById<Button>(R.id.signUp)?.setOnClickListener(
Toast.makeText(mActivity, "Button Clicked", Toast.LENGTH_LONG).show()
)
答案 20 :(得分:0)
在按钮上添加clickListener,如下所示
btUpdate.setOnClickListener(onclickListener)
在您的活动中添加此代码
val onclickListener: View.OnClickListener = View.OnClickListener { view ->
when (view.id) {
R.id.btUpdate -> updateData()
}
}
答案 21 :(得分:0)
如果你想在Kotlin中模拟旧的匿名方式,我发现这很有效。
btnNewWay!!.setOnClickListener(object:View.OnClickListener {
override fun onClick(v: View?) {
//Your Code Here!
}})
答案 22 :(得分:0)
我知道实现这一目标的最简单方法是通过Kotlin Android Extensions。
在你的app / build.gradle
上 apply plugin: 'kotlin-android-extensions'
如果您的按钮被调用&#39; btnAdd&#39;,则在您的片段或活动中导入以下内容:
import kotlinx.android.synthetic.main.fragment_transactions.btnAdd
override fun onViewCreated(view: View?, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
btnAdd.setOnClickListener {
Toast.makeText(context , "Done", 10).show()
}
}
答案 23 :(得分:0)
您可以在Kotlin中使用setOnClickListener
button.setOnClickListener(View.OnClickListener {
//code
})
答案 24 :(得分:0)
val saveButton:Button = findViewById(R.id.button_save)
saveButton.setOnClickListener{
// write code for click event
}
with view object
saveButton.setOnClickListener{
view -> // write code for click event
}
答案 25 :(得分:0)
首先找到按钮,以阻止来自#AccountController
public class AccountController : cadastroControllerBase
{
...
public ActionResult EmailActivation()
{
return View("EmailActivation");
}
的强制转换,您可以使用View
,如下所示:
<>
获得val button = findViewById<Button>(R.id.button);
的实例后,您现在可以按如下方式附加点击监听器:
Button
答案 26 :(得分:0)
添加build.gradle模块文件
android {
...
buildFeatures {
viewBinding true
}
}
为活动添加
private lateinit var binding: ResultProfileBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ResultProfileBinding.inflate(layoutInflater)
val view = binding.root
setContentView(view)
}
点击添加
binding.button.setOnClickListener { Log.d("TAG", "Example") }
答案 27 :(得分:0)
如果其他任何人想要在使用绑定时实现此目的。如果您的视图ID为button_save,则可以利用kotlin apply语法编写此代码
binding.apply {
button_save.setOnClickListener {
//dosomething
}
}
笔记绑定是为xml文件创建的绑定实例的名称。如果要分段编写代码,则完整代码如下。活动的工作原理类似
private lateinit var binding: FragmentProfileBinding
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
binding = FragmentProfileBinding.inflate(inflater, container, false)
return binding.root
}
// onActivityCreated is deprecated in fragment
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
binding.apply {
button_save.setOnClickListener {
//dosomething
}
}
}
答案 28 :(得分:0)
使用 kotlin 从 android 中的函数实现按钮 OnClickListener。
首先从 .xml 文件创建按钮视图
`<Button
android:id="@+id/btn2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="Button2"
android:layout_weight="0.5"/>`
//并在Activity中创建按钮实例
private var btn1:Button?=null
或
//对于延迟初始化可以像这样,
private lateinit var btn1:Button
//在onCreate中,
btn1=findViewById(R.id.btn1) as Button
btn1?.setOnClickListener { btn1Click() }
//从Function实现按钮OnClick事件,
private fun btn1Click() {
Toast.makeText(this, "button1", Toast.LENGTH_LONG).show()
}
答案 29 :(得分:0)
最适合在 Kotlin 中实现点击监听器(意味着没有 findview 通过 id 你可以点击或设置文本视图、按钮、微调器等)
步骤:-
这是 Gradle 文件 插件{ id 'com.android.application' id 'kotlin-android' id 'kotlin-android-extensions' }
安卓{ 编译SDK版本30 构建工具版本“30.0.3”
defaultConfig {
applicationId "com.safal.myapp"
minSdkVersion 21
targetSdkVersion 30
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = '1.8'
}
}