J'essaie de mettre à jour un TextView à partir d'un objet compagnon de classe et de l'application se bloque. Qu'est-ce que je fais mal?
exampleclass.kt strong> p> FATAL EXCEPTION: main Process: com.test.testapp, PID: 15819
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.test.testapp/com.test.testapp.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.pm.ApplicationInfo android.content.Context.getApplicationInfo()' on a null object reference
3 Réponses :
Essayez comme suit ce
Pass Objet de MainAlacivité Code> à
Exampleclass code> P>
class ExampleClass {
companion object{
fun writeText(textValue:String,mainActivity: MainActivity) {
mainActivity.testMessage.text = textValue
}
}
}
Pourquoi Writetext (TextValue: String, Contexte: Contexte) Code>, puis de la distribution au lieu de
Writetext (TextValue: String, MainActivity: MainActivity) Code> ??
à l'intérieur de la méthode Writetext (TextValue: String) forte>, vous créez une nouvelle instance forte> de la mainActivity (MainAlacivité ()) dans que TextView est null forte >, et ne pas obtenir l'existant vous ne devez pas utiliser d'objet compagnon pour cela.
¡¡¡¡Devrait expliquer la situation, pourquoi en avez-vous besoin p> s'il import com.test.testapp.MainActivity
import kotlinx.android.synthetic.main.activity_main.*
class ExampleClass {
companion object{
fun writeText(textValue:String, textView: TextView) {
textView.text = textValue
}
}
}
car avec le code Il existe différentes façons d'atteindre ce que vous voulez, même si le flux est faux p> exemple p> je ne fais pas Savoir exactement pourquoi voulez-vous faire cela, mais si vous souhaitez transmettre des données entre activités ou fragments ou services, vérifiez que https://developer.android.com/Guide/Components/intents-Filters P> P> MainAlacivity () ... Code> Vous n'obtenez pas l'activité chargée, mais vous construisez une nouvelle activité qui n'a pas encore été diffusée, alors la vue ne 't exist.
Cela semble vrai, mais vous devriez vérifier que c'est une activité toujours en vie. Sinon, vous pourriez obtenir une exception. Vous pouvez utiliser "MainActivity.isfinishing" pour vérifier cela.
vous pouvez faire beaucoup de choses, ce n'est pas quelque chose que vous devriez faire, c'est juste un exemple
Peut-être que vous recherchez une vue qui n'appartient pas à la hiérarchie d'affichage de l'activité actuelle.