web-dev-qa-db-fra.com

android TextView setText ne fonctionne pas

Je sais qu'il y a beaucoup de sujets similaires, mais je les ai parcourus et je ne peux toujours pas comprendre le problème. Mon programme parvient au gestionnaire mais renvoie toujours l'exception de capture "Le message n'est pas traité".

J'ai déclaré le TextView private TextView chatbox;

Sous onCreate j'ai:

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        setUpViews();
        setUpListener();
    }

où snippet setUpViews () ressemble à:

 private void setUpViews() {
    chatbox = (TextView) findViewById(R.id.chatbox);
    }

Gestionnaire:

public Handler mHandler = new Handler(Looper.getMainLooper()){
        @Override
        public void handleMessage(Message msg){
            try{
                chatbox.setText("Got it!");
            }catch(Exception e){
                Log.i("MYLOG", "Message was not handled.");
            }

        }
    };

Extrait dans le fichier main.xml:

<TextView
        Android:id="@+id/chatbox"
        Android:layout_width="200dp"
        Android:layout_height="200dp"
        Android:layout_centerHorizontal="true"
        Android:layout_centerVertical="true"
        Android:textAppearance="?android:attr/textAppearanceLarge" />
11
user2562568

Si quelques pauvres âmes googles après ce problème à l'avenir, j'ai finalement découvert le problème. J'avais plusieurs fragments, un pour chaque onglet de mon ViewPager où un TextView avait le même identifiant dans deux fragments et était donc en conflit. Je n'avais pas réalisé que j'avais le même identifiant alors tout semblait aller pour le mieux, pas de message d'erreur, mais le texte n'a tout simplement pas changé. Il suffit de changer l'identifiant.

41
Hudson

Vous ne nous avez pas donné beaucoup pour continuer.

Vous devriez examiner la trace de la pile des exceptions, au lieu d'imprimer un message à la console: e.printStackTrace();

Mais à partir de là, si je devais deviner, il semblerait que vous définissiez le texte du TextView en dehors du fil principal, ou - et cela semble peu probable en fonction de ce que vous avez posté - votre TextView n'a pas été défini et vous avez exception de pointeur nul.

2
SK9

J'espère que votre gestionnaire s'exécute dans le thread d'interface utilisateur. Essayez également de procéder ainsi: assignez votre chaîne à une variable et utilisez-la car elle nécessite charsequence.

String temp = "Got it!";
chatbox.setText(temp);
0
Sushil

Dans mon cas
J'ai découvert qu'il existe une TextWatcher et Filter liée à ma Textview
Les deux contenant une logique empêchent la mise à jour de ma valeur Textview
Donc, en plus d'autres solutions
Vous pouvez vérifier si votre Textview est liée à une quelconque TextWatcher ou Filter puis la tracer.

0
ahmednabil88

juste comme c'est ok!

private void setUpViews() {
    chatbox = (TextView) findViewById(R.id.chatbox);
    chatbox.setText("Got it!");
}
0
user1615651