#android #kotlin #android-intent
Вопрос:
Я работаю над приложением для регистрации студентов, занятий, зачисления и заметок. Мне нужно передать данные от учащихся и классов в раздел регистрации, а данные о регистрации-в раздел заметок, чтобы добавить заметку и, наконец, отправить электронное письмо. Моя главная проблема заключается в том, что данные не сохраняются при изменении действий. Я выделил 2 основные функции извлечения данных в MakeEnroll.kt, и они работают, но только когда активен 1, а не оба. Я слышал, что это невозможно, но я не совсем уверен в этом утверждении. Есть ли какой-нибудь способ заставить это работать? Должен ли я использовать пользовательский ArrayList/ArrayAdapter для сохранения данных? Примите во внимание, что я не использую никакой базы данных, только встроенную память для этого, чтобы решить эту проблему.
Заранее очень признателен.
StudentReg.kt
class RegStudento : AppCompatActivity() {
var StntValues : HashMap<Int, String> = hashMapOf()
var number = 0
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_reg_student)
// Btn Handler
btnOnBack2.setOnClickListener{onBackPressed()}
btnSaveStnt.setOnClickListener{
SaveStnt()
PassData()
}
}
fun SaveStnt(){
val dataStnt = StringBuilder()
number =1
dataStnt.append(txtAccNumber.text.toString().trim()).append("|")
dataStnt.append(txtStntName.text.toString().trim()).append("|")
dataStnt.append(txtStntMail.text.toString())
StntValues.put(number, dataStnt.toString())
// val intent = Intent(this,RegistrarClase::class.java)
// intent.putExtra("valores alumno", StntValues)
// startActivity(intent)
}
fun PassData(){
val intentStnt = Intent(this,RegistrarClase::class.java)
intentStnt.putExtra("values student", StntValues)
startActivity(intentStnt)
}
}
ClassReg.kt
class RegClass : AppCompatActivity() {
var ClassValues : HashMap<Int, String> = hashMapOf()
var numberC = 0
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_reg_class)
// Btn Handler
btnOnBack.setOnClickListener{onBackPressed()}
btnSaveClass.setOnClickListener{
SaveClass()
PassClassData()}
}
fun SaveClass(){
val dataClass = StringBuilder()
numberC =1
dataClass.append(txtClassCode.text.toString().trim()).append("|")
dataClass.append(txtClassName.text.toString().trim()).append("|")
dataClass.append(txtClassSection.text.toString().trim()).append("|")
dataClass.append(txtClassTime.text.toString().trim()).append("|")
dataClass.append(txtLocation.text.toString())
ClassValues.put(numberC, dataClass.toString())
}
fun PassClassData(){
val intentClass = Intent(this,MakeEnroll::class.java)
intentClass.putExtra("values class", ClassValues)
startActivity(intentClass)
}
}
MakeEnroll.kt
class MakeEnroll : AppCompatActivity() {
var StntToFetch : HashMap<Int, String> = hashMapOf()
var ClassToFetch : HashMap<Int, String> = hashMapOf()
var EnrollValues : HashMap<Int, String> = hashMapOf()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_make_enroll)
FetchStudentData()
FetchClassData()
// Btn Handler
btnOnBack3.setOnClickListener{onBackPressed()}
btnSaveEnroll.setOnClickListener{
SaveEnroll()
}
// Spinner for Student
val spinnerStudentToEnroll = findViewById<Spinner>(R.id.spinnerEnrollStudent)
val list1 = listOf("Choose a student", StntToFetch)
val adaptador1 = ArrayAdapter(this,android.R.layout.simple_spinner_item, list1)
spinnerStudentToEnroll.adapter = adaptador1
// Spinner for Class
val spinnerClassToStudent = findViewById<Spinner>(R.id.spinnerEnrollClass)
val list2 = listOf("Choose a class", ClassToFetch)
val adaptador2 = ArrayAdapter(this,android.R.layout.simple_spinner_item, list2)
spinnerClassToStudent.adapter = adaptador2
}
fun FetchStudentData(){
var EnrollStudent = ""
var counter = 0
var intentStntFetched = intent
StntToFetch = intentStntFetched.getSerializableExtra("values student") as HashMap<Int, String>
for (value1 in StntToFetch){
val list1 = valor1.toString().split("|").toTypedArray()
EnrollStudent = list1[0]
counter
}
}
fun FetchClassData(){
var ClassToEnrollStudent = ""
var counter2 = 0
var intentClassFetched = intent
ClassToFetch = intentClassFetched.getSerializableExtra("values class") as HashMap<Int, String>
for (value2 in ClassToFetch){
val list2 = valor2.toString().split("|").toTypedArray()
ClassToEnrollStudent = list2[0]
counter2
}
}
fun SaveEnroll(){
val intent3 = Intent(this,SetNotes::class.java)
intent3.putExtra("values enroll", EnrollValues)
startActivity(intent3)
}
}
SetNotes.kt (using preset data)
class SetNotes : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_set_notes)
val spinner = findViewById<Spinner>(R.id.spinnerStntToEvaluate)
val list = listOf("Aaaa","Bbbb","Cccc")
val adaptador = ArrayAdapter(this,android.R.layout.simple_spinner_item, list)
spinner.adapter = adaptader
}
}