Kotlin编译器错误:需要成员声明

时间:2018-09-18 18:46:23

标签: android kotlin

我是 Android Studio Java 的新手。尝试写一个登录信息。有人可以帮助我了解代码的内容吗?

package com.example.XXX.myapplication

import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.widget.TextView;
import android.widget.Button;
import android. widget.EditText;
import android.widget.Toast;

import kotlinx.android.synthetic.main.activity_calendar.*

class Calendar : AppCompatActivity() {
    Button b1,b2; // Log in page** - b1 = log in; b2 - sign up;
    TextView tx1, tx2,tx3; // tx1 = username; tx2 = password;
    EditText ed1, ed2; // ed1 = username; ed2 = password inputs;

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_calendar)

        // Example of a call to a native method
        b1 = (Button)findViewById(R.id.bt1LogIn);
        b2 = (Button)findViewById(R.id.bt2SignUp);
        ed1 = (EditText)findViewById(R.id.etUserName);
        ed2 = (EditText)findViewById(R.id.etPassword);
        tx1 = (TextView)findViewById(R.id.tvUserName);
        tx2 = (TextView)findViewById(R.id.tvPassword);
        tx3 = (TextView)findViewById(R.id.tvattempts);
}

1 个答案:

答案 0 :(得分:1)

通常,在 Kotlin 中,这样的视图声明应与lateinit var一起使用,以避免出现expecting member declaration错误。例如:

private lateinit var b1: Button
private lateinit var b2: Button
private lateinit var tx1: TextView
etc...

但是这里最方便的部分是,在导入kotlinx.android.synthetic.main.activity_calendar.*时,您不必以编程方式实例化activity_calendar.xml中定义的视图。这些视图将“为您实例化”。只需使用由@+id/...定义的视图名称即可。例如:

etUserName.text = "Enter name"

请注意,在科特林中,分号是可选的,不应使用。

科特林进一步学习的起点:Get Started with Kotlin on Android