如果活动写在Kotlin中,Button onClick属性是none
按照这个教程: Android的 – 开始另一个活动,如果我做了MainActivity.java
按钮OnClick
属性有sendMessage()
方法。
但是,如果我做了MainActivity.kt
按钮OnClick
属性已经注意到显示。 只是一个none
。
这是一个Android Studio 3的错误,或者我错过了Kotlin的东西?
Java mainActivity:
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } /** Called when the user taps the Send button */ public void sendMessage(View view) { // Do something in response to button } }
Kotlin mainActivity:
class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) } /** Called when the user taps the Send button */ fun sendMessage(view: View) { // Do something in response to button } }
布局xml(Java和Kotlin项目是一样的)
<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="ir.bigbang.vahid.myapplication.MainActivity"> <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Button" tools:layout_editor_absoluteX="148dp" tools:layout_editor_absoluteY="81dp" /> </android.support.constraint.ConstraintLayout>
似乎设计师还不支持Kotlin。 这里有一些解决方案:
XML(不推荐)
将以下行添加到Button
标签。 这正是设计师所要做的。
android:onClick="sendMessage"
旧的时尚
不需要添加任何东西。
val button = findViewById<Button>(R.id.Button) button.setOnClickListener { }
kotlin-android-extensions(推荐)
添加apply plugin: "kotlin-android-extensions"
到你的build.gradle
// button is the Button id button.setOnClickListener { }
你可以很容易地在XML内部定义这个。 但是使用android:onClick
属性还是有点贵的。
相反,您可以考虑使用Kotlin Android扩展和综合属性:
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) button.setOnClickListener { // Do something in response to button } }
- 为什么在AndroidStudio 3.0中运行kotlin测试非常慢?
- Kotlin和RxJava2 zip运算符 – 以下函数都不能用提供的参数调用
- 在Kotlin中构建GridView时无法传递Context
- Android Studio 3.0 Canary 2:未找到属性“android:versionCode”
- jacoco安卓gradle插件android kotlin项目后android android gradle插件到版本3(测试版)
- 错误:找不到符号类为android studio 3.0稳定的java类添加kotlin类
- RegisterResGeneratingTask已弃用,请使用registerGeneratedFolders(FileCollection)
- Android Studio 3.1 Canary 3上的Gradle同步错误
- 如果活动写在Kotlin中,Button onClick属性是none