我正在学习android studio,我不知道为什么会发生,如果有人可以向我解释一下,我将不胜感激:
当我在onCreate之后放置xxxxanything.text时,出现错误“预期成员声明”,但它在onCreate方法中起作用。为什么会发生?
我几次看到活动生命周期,但是我仍然不确定将内容放置在何处,例如onclick监听器。
我已经想知道一些指南了,我现在正在研究大胆性,很难理解recyclerview,而且我还尝试开发良好的编程习惯。
非常感谢您能提供的任何帮助。
像这样
package app.helloworld.dashimir.com.diceroller
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val rollButton: Button = findViewById(R.id.roll_button)
rollButton.text = "Let's Roll"
}
}
但是在将其放在create上时出现错误:预期成员声明;
package app.helloworld.dashimir.com.diceroller
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
val rollButton: Button = findViewById(R.id.roll_button)
rollButton.text = "Let's Roll"
}
答案 0 :(得分:1)
在kotlin(.kt)文件中,您的代码应位于函数内部(通常为main)。在Android开发中,这意味着通常您的代码将位于活动中的onCreate
之类的方法中,但是类或顶级函数(类之外)中的其他方法也可以工作。
在您的示例中,您移到onCreate
之外的代码包含一个值声明val rollButton: Button = findViewById(R.id.roll_button)
,该声明在类的主体内有效,因为它将被转换为该类的属性。但是第二行:rollButton.text = "Let's Roll"
是一个赋值,只能在一个函数中执行。
此外,在具有kotlin的Android中,您可以使用kotlin android extensions,它使您可以直接使用其ID直接从xml引用视图,而无需使用findViewById
答案 1 :(得分:0)
建立功能的最佳方法之一。
第一:在xml文件中将OnClick添加到按钮:
android:OnClick="OnClick"
秒:在MainActivity类中构建Onclick函数,不要忘记构造函数(v:View):
package app.helloworld.dashimir.com.diceroller
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
fun OnClick(v:View){
val rollButton: Button = findViewById(R.id.roll_button)
rollButton.text = "Let's Roll"
}