Hello, j'ai une question concernant les contextes ...
# french
b
Hello, j'ai une question concernant les contextes : Je voulais utiliser un
context.getString
dans un objet mais ça ne fonctionne pas. J'ai tenté aussi avec un
Resources.getSystem()
mais ça fait tout planter.
Copy code
package com.baldo.bob.ui.compose.notes.feelingModel

import com.baldo.bob.R

object FeelingList {
    val feelingList: List<Feeling> = listOf(
        //problème ici
        Feeling("\uD83E\uDD75", context.getString(R.string.terrible)),
        Feeling("\uD83D\uDE1E", "Pas bien"),
        Feeling("\uD83D\uDE10", "Bof"),
        Feeling("\uD83D\uDE42", "Ca va"),
        Feeling("\uD83D\uDE0D", "Au top !"),
    )

    val feelingListString : List<String> = feelingList.map { it.icon + " - " + it.label }
}
Bref si quelqu'un a une idée je suis preneur 😉 merci !!
m
C'est une app Android? If faut passer ton context en paramètre depuis "le bon endroit"
b
ouep c'est une app android
m
Le context est lié à une Activity, tu peux pas l'utiliser dans un contexte statique comme un
object
. Il faut forcément le passer en paramètre
Sinon tu peux utiliser le context d'Application et le stocker dans une variable statique globale. C'est pas vraiment recommandé mais ça marche
o
Si j'ai besoin de context dans un class singleton, je n'utilise pas
object
. J'utilise simple class, c'est DI (Hilt) qui le fait singleton. (Avec Hilt c'est extra simple d'injecter app context.
Sinon d'autre piste pour ce cas: tu peux mettre seulement les resources ids (comme int) ici dans ce liste et tu le transformerais avec context dans le UI.
☝🏻 1
l
Tu peux juste utiliser les resource ids dans tes objets, et faire le getString seulement au dernier moment
plus1 1
b
yes je peux faire la technique des ids mais du coup la variable feelingListString ne fonctionne plus
l
Tu peux la créer dans l'UI ou le ViewModel