마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안녕하세요 안드로이드 신생아 급 초보인데 ... 질문하겠습니다.

0 추천
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import android.widget.EditText
import androidx.viewbinding.ViewBinding

class ResisterActivity : AppCompatActivity() {

    private lateinit var myEditText: EditText et_id, et_pw, et_name, et_call ; // <- 여기랑 
    private var Button btn_resister ;  //<- 왜 오류가 발생하는지 모르겠어요 ,..

    override fun onCreate(savedInstanceState: Bundle?) { //액티비티 시작시 처음으로 실행되는 생명주기
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_resister2);

        //아이디 값 찾아주기
        et_id = findViewById(R.id.et_id) ;   // <- 모든 et_ 에서 오류가 발생
        et_pw = findViewById(R.id.et_pw) ;
        et_name = findViewById(R.id.et_name) ;
        et_call = findViewById(R.id.et_call) ;

        //회원가입 버튼 클릭 시 수행
        btn_register = findViewById(R.id.btn_resister) ;
        btn_resister.setOnClickListener(new View.OnClickListener() { // <- 자동완성이 안됨 직접 써야함.. 
            @Override
            pulic void onClick //<- 자동완성이 안됨 ...

        });

 // 로그인 화면 만드는게 진짜 굉장히 어렵네요 .. ㅠㅠ
    }
웅자띠 (180 포인트) 님이 2022년 5월 22일 질문

1개의 답변

0 추천
먼저 각 라인끝의 세미콜론(;)을 제거하세요. 코틀린에서는 사용하지않는게 규칙입니다.
private lateinit var myEditText: EditText et_id, et_pw, et_name, et_call
이렇게 한가지 변수타입을  위처럼 한 라인에 한꺼번에 선언할 수 없습니다. 코틀린은 명시적으로 변수를 초기화 하거나, lateinit var 또는 by lazy를 사용해서 초기화를 미룰 수 있습니다.

private var Button btn_resister
변수를 초기화하거나 lateinit var또는 by lazy를 사용해야 합니다. 그리고 btn_register: Button 처럼 변수명이 앞에 타입이 뒤에 와야 합니다.

추가로 개인적인 견해로는 코틀린의 변수 초기화 방식은 자바에서 발전되었다고 생각합니다. 왜냐하면 개발자가 실수를 하지않도록 정확한 의도롤 요구하기 때문입니다.

 

시간이 걸리더라도 코틀린 기초를 먼저 공부하세요. 기본적인 문법조차 익숙치 않으면 필요한 기능을 추가하는데 이렇게 아주 기초적인 부분에 대해 질문을 올리고 답을 기다리는 것이 훨씬 더 시간이 많이 걸릴 것으로 보여요.
spark (224,800 포인트) 님이 2022년 5월 22일 답변
...