Как отправлять данные между несколькими действиями в 2 разных блесны котлин

#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

    }
}