Android: Как отобразить экран впервые только в Kotlin? - PullRequest
0 голосов
/ 11 апреля 2020

Мое приложение имеет начальный экран (действие), который просит пользователя ввести свое имя, а затем нажать кнопку входа в систему. После того, как пользователь сделает это, я не хочу, чтобы приложение снова отображало этот экран, и вместо этого приложение должно начать другое действие. Я провел некоторое исследование и обнаружил, что вы должны использовать общие предпочтения, но я все еще в замешательстве. Ниже приведен код начальной активности экрана:

class StudentNameInput : AppCompatActivity(), View.OnClickListener {

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

       btnStudentLogIn.setOnClickListener(this)
    }

    private fun validate(): Boolean {
        if (txt_student_name.text.toString().isEmpty()){
            txt_student_name.error = "Name cannot be empty"
            return false
        }

        return true
    }

    override fun onClick(v: View?){
        when(v?.id){
            R.id.btnStudentLogIn->{
                if(validate()){
                    Log.i(null, "setOnClickListener")
                    val intent = Intent(this, StudentInitialActivity::class.java)
                    startActivity(intent)
                }
            }
        }
    }

1 Ответ

2 голосов
/ 11 апреля 2020

Вы должны сохранить имя пользователя в общих настройках, а затем при запуске действия необходимо проверить, сохранились ли в общих настройках имя пользователя, и если да, вы запускаете следующее действие и заканчиваете sh текущим, но если нет Вы остаетесь в текущей деятельности, что-то вроде этого:

class StudentNameInput : AppCompatActivity(), View.OnClickListener {

    private lateinit var sharedPref: SharedPreferences

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

       sharedPref: SharedPreferences = getSharedPreferences("YOUR_PREF_NAME", Context.MODE_PRIVATE)

        if (wasUserNameSaved()) {
            val intent = Intent(this, StudentInitialActivity::class.java)
            startActivity(intent)
            finish()
            return
        }
        setContentView(R.layout.activity_student_name_input)

       btnStudentLogIn.setOnClickListener(this)
    }

    private fun validate(): Boolean {
        if (txt_student_name.text.toString().isEmpty()){
            txt_student_name.error = "Name cannot be empty"
            return false
        }

        return true
    }

    override fun onClick(v: View?){
        when(v?.id){
            R.id.btnStudentLogIn->{
                if(validate()){
                    Log.i(null, "setOnClickListener")
 sharedPref.edit().putString("user_name", txt_student_name.text.toString()).apply()
                    val intent = Intent(this, StudentInitialActivity::class.java)
                    startActivity(intent)
                }
            }
        }
    }

    private fun wasUserNameSaved(): Boolean {
   return sharedPref.getString("user_name", "").isNotEmpty()
    }

Извините за неправильное форматирование, я написал это с моего телефона.

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