Bonjour,
Si je viens solliciter l'aide de la communauté aujourd'hui, c'est par ce que ça fait bientôt une semaine que je bloque sur ce souci.
Je passe une requête à l'aide de retrofit et de RxJava à mon API à partir de mon premier fragment, puis j'affiche la réponse reçue dans un Spinner. Mais à chaque fois que je sélectionne un élément de mon spinner et que je clique sur le bouton frag_button_choose de mon premier fragment pour l'envoyer à un second fragment, je reçois toujours le premier élément de mon spinner.
Voici le code de mon fragment,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
 
class SkillUpFragment : Fragment() {
 
 
    lateinit var skillsSpin : Spinner
    lateinit var model : SharedViewModel
    private val myCompositeDisposable= CompositeDisposable()
 
    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
        val view = inflater.inflate(R.layout.skill_up_fragment, container, false)
 
        skillsSpin = view!!.findViewById(R.id.skill_spinner)
        model = ViewModelProviders.of(activity!!).get(SharedViewModel::class.java)
 
        return view
    }
 
    override fun onStart() {
        super.onStart()
        loadData()
    }
 
    override fun onStop() {
        super.onStop()
        myCompositeDisposable.dispose()
    }
 
    private fun loadData(){
        val token = SharedPrefManager.getInstance(activity!!.applicationContext).loginResponse.token
        val parsedJWT = JWT(token!!)
        val metaId = parsedJWT.getClaim("id")
        val id = metaId.asInt()
 
        myCompositeDisposable?.add(RetrofitClient.instance.getSkillsToChoose(Id(id!!))
            .observeOn(AndroidSchedulers.mainThread())
            .subscribeOn(Schedulers.io())
            .subscribe(this::handleResponse))
 
    }
 
    private fun handleResponse(skills: List<Skill>){
        val skillsName = skills.map { it.name }
 
        skillsSpin.adapter = ArrayAdapter<String>(context, android.R.layout.simple_list_item_1,skillsName)
        skillsSpin.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
            override fun onNothingSelected(parent: AdapterView<*>?) {
                TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
            }
 
            override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
                val skill = skillsName[id.toInt()]!!
                println("!!!!!!!!AVANT DE CLIQUER SUR LE BUTTON!!!!!!!!!!!")
                println(skill)
                frag_button_choose.setOnClickListener {
                    println("!!!!!!!!APRES AVOIR CLIQUER SUR LE BUTTON!!!!!!!!!!!!")
                    println(skill)
                    model.setText(skill)
                }
            }
        }
    }
}
Je vous remercie d'avance pour toute aide!!