Как объявить объект класса в Котлине - PullRequest
0 голосов
/ 02 июня 2019

Я внедряю систему регистрации пользователей в своем приложении и хочу шаг за шагом сохранять пользовательские данные в классе с именем «UserProfile».

Мне удалось создать класс и объявить его объект, но приложение не отвечает, когда я нажимаю кнопку. Мой код не показывает ошибок. Думаю, я не могу правильно объявить объект класса.

class RegisterActivity : AppCompatActivity() {

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

        class UserProfile {
            private lateinit var username: String
            private lateinit var mobile: String
            private lateinit var email: String
            private lateinit var address1: String
            private lateinit var address2: String
            private lateinit var gender: String
            fun add(data:String,i:Int){
                when (i){
                    1 -> username = data
                    2 -> mobile = data
                    3 -> email = data
                    4 -> address1 = data
                    5 -> address2 = data
                    6 -> gender = data
                }
            }
        }
        var registrationStep= 1
        lateinit var user: UserProfile
        val inputBox = findViewById<EditText>(R.id.editText)
        val textBox = findViewById<TextView>(R.id.textView)
        val data = inputBox.text.toString()
        val nextBTN = findViewById<Button>(R.id.NextBtn)
        nextBTN.setOnClickListener {
            println("Clicked Listener2")
            user.add(data,registrationStep)

            when (registrationStep){
                1 ->  textBox.text = getString(R.string.register1)
                2 ->  textBox.text = getString(R.string.register2)
                3 ->  textBox.text = getString(R.string.register3)
                4 ->  textBox.text = getString(R.string.register4)
                5 ->  textBox.text = getString(R.string.register5)
                6 ->  textBox.text = getString(R.string.register6)
            }
            registrationStep += 1
        } 
   }
}

Я ожидаю, что значение 'EditText' будет сохранено в классе, а текст 'TextView' будет изменен при нажатии кнопки 'Button'. Но вместо этого приложение продолжает закрываться и не отвечает, когда я нажимаю кнопку «Кнопка».

1 Ответ

0 голосов
/ 02 июня 2019

Вам необходимо создать экземпляр объекта вашего класса перед использованием. Декларация не эквивалентна. Так что замени

lateinit var user: UserProfile

с

var user: UserProfile = UserProfile()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...