如果活动写在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项目是一样的)
似乎设计师还不支持Kotlin。 这里有一些解决方案:
XML(不推荐)
将以下行添加到Button
标签。 这正是设计师所要做的。
android:onClick="sendMessage"
旧的时尚
不需要添加任何东西。
val button = findViewById
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 } }
- 当我使用Android Studio 3.0时如何存储json数据?
- 无法获取提供者android.arch.lifecycle.LifecycleRuntimeTrojanProvider:java.lang.ClassNotFoundException
- Java活动不会在布局中显示任何视图
- 在Kotlin中构建GridView时无法传递Context
- 如何将一个字符串传递给Kotlin中没有转义符号的variables?
- 使用Android Studio 3.0 beta7版本时,Kotlin注释处理器会导致编译时错误
- 无法合并dex
- 错误:找不到符号类为android studio 3.0稳定的java类添加kotlin类
- 将子模块添加到项目中,使用Gradle版本4.1在Android studio 3.0中导致gradle构建失败