【问题标题】:Why .text only works inside onCreate ? At least at my code :为什么 .text 只适用于 onCreate ?至少在我的代码中:
【发布时间】:2019-04-05 20:20:04
【问题描述】:

我正在学习 android studio,但我不知道为什么会这样,如果有人能给我解释一下,我将不胜感激:

当我在 onCreate 之后放置 xxxxanything.text 时,我收到错误“预期成员声明”,但它在 onCreate 方法中有效。为什么会发生?

我曾多次看到活动生命周期,但我仍然怀疑将东西放在哪里,比如 onclick 监听器。

我已经对几个指南感到疑惑,目前我正在研究 udacity,很难理解 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"
    }

}

但是当我在创建后放置它时出现错误:预期的成员声明;

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"
}

【问题讨论】:

    标签: android kotlin


    【解决方案1】:

    在 kotlin (.kt) 文件中,您的代码应该在函数内(通常是 main)。在 Android 开发中,这意味着您的代码通常会在 Activity 的 onCreate 等方法内,但类或顶级函数(类外)的其他方法也可以。

    在您的示例中,您移出onCreate 的代码包括一个值声明val rollButton: Button = findViewById(R.id.roll_button),它在类的主体内有效,因为它将变成所述类的属性。但第二行:rollButton.text = "Let's Roll" 是一个只能在函数内部执行的赋值。

    此外,在带有 kotlin 的 Android 中,您可以使用 kotlin android extensions,它可以让您直接使用 xml 中的 id 来引用视图,而无需使用 findViewById

    【讨论】:

      【解决方案2】:

      它构建功能的最佳方式之一。

      首先:在 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"
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-07-21
        • 1970-01-01
        • 1970-01-01
        • 2020-06-09
        • 1970-01-01
        • 2022-01-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多