Я использовал intent
для передачи student name
от начальной активности StudentNameInput
к StudentInitialActivity
. Второе действие отображает любое имя, введенное пользователем в предыдущем действии. Мой код правильно отображает имя, как только пользователь входит в систему. Однако, когда я закрываю приложение, имя отображается как null
. У меня вопрос, как мне продолжать отображать имя даже после закрытия и перезапуска приложения. Я уже реализовал shared preferences
в своем коде, чтобы отслеживать начальный запуск, и, следовательно, приложение не запрашивает имя при каждом открытии приложения.
StudentNameInput
Активность:
class StudentNameInput : AppCompatActivity(), View.OnClickListener {
private lateinit var sharedPref: SharedPreferences
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
sharedPref = 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?) {
val editTextStudentName = findViewById<EditText>(R.id.txt_student_name);
when (v?.id) {
R.id.btnStudentLogIn -> {
if (validate()) {
Log.i(null, "setOnClickListener")
sharedPref.edit().putString("user_name", txt_student_name.text.toString())
.apply()
val studentName = editTextStudentName.text.toString();
val intent = Intent(this@StudentNameInput, StudentInitialActivity::class.java)
intent.putExtra("Name", studentName);
startActivity(intent)
}
}
}
}
private fun wasUserNameSaved(): Boolean {
return sharedPref.getString("user_name", "").isNotEmpty()
}
}
StudentInitialActivity
Активность:
class StudentInitialActivity : Activity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_student_initial)
val intent = intent
val name = intent.getStringExtra("Name")
val studentNameTextView = findViewById<TextView>(R.id.textViewStudentName)
textViewStudentName.text = "Logged in as: " + name
btnScanForClasses.setOnClickListener {
Log.i(null, "setOnClickListener")
val intent = Intent(this, DeviceScanActivity::class.java)
startActivity(intent)
}
btnRecords.setOnClickListener {
startActivity(Intent(this, StudentRecords::class.java))
}
}
}