web-dev-qa-db-fra.com

Pourquoi ne puis-je pas définir du texte sur un Android TextView?

J'ai un problème avec la définition de texte dans un TextView:

TextView Android:editable = "true".

Dans mon .Java, il semble que cela devrait fonctionner:

 text = (EditText) findViewById(R.id.this_is_the_id_of_textview);
text.setText("TEST");

Mais ce n'est pas le cas. Quelqu'un peut-il me dire ce qui ne va pas ici?

18
Christoph

Dans votre classe Java, définissez le type "EditText" sur "TextView". Parce que vous avez déclaré une TextView dans le fichier layout.xml

17
Noman

Le code devrait plutôt ressembler à ceci:

TextView text = (TextView) findViewById(R.id.this_is_the_id_of_textview);
text.setText("test");
35
Arnab C.

Pour utiliser n'importe quelle activité, utilisez le code ci-dessous ... Suivez ces étapes une par une:

1.Déclarer

    private TextView event_post;

2. Lie ce 

    event_post = (TextView) findViewById(R.id.text_post);

3.SetText dans 

    event_post.setText(event_post_count);
5
135

Essayez comme ça:

TextView text=(TextView)findViewById(R.id.textviewID);
text.setText("Text");

Au lieu de cela:

text = (EditText) findViewById(R.id.this_is_the_id_of_textview);
text.setText("TEST");
4
Mr.Bunny

J'avais un problème similaire, mais mon programme se bloquait lorsque j'essayais de définir le texte. J'essayais de définir la valeur de texte à partir d'une classe qui étend AsyncTask, et c'est ce qui causait le problème. 

Pour le résoudre, j'ai déplacé mon setText vers la méthode onPostExecute

protected void onPostExecute(Void result) {
    super.onPostExecute(result);

    TextView text = (TextView) findViewById(R.id.errorsToday);
    text.setText("new string value");
}
1
Scott Bentley

Ou vous pouvez faire de cette façon:

((TextView)findViewById(R.id.this_is_the_id_of_textview)).setText("Test");
1
Hamedz

Vous définissez le texte sur un champ qui a été affiché dans une autre instance de votre activité résidant en espèces, par exemple, lorsqu'elle était orientée paysage. Ensuite, il a été recréé pour une raison quelconque. Vous devez définir le texte de manière inhabituelle en enregistrant la chaîne dans SharedPreferences et en forçant la relance de l'activité à l'aide de recreate (), par exemple pour mOutputText:

@Override
protected void onResume() {
    super.onResume();
    String sLcl=mPreferences.getString("response","");
    if(!sLcl.isEmpty()){
        mOutputText.setText(sLcl);
        mPreferences.edit().putString("response","").commit();
    }
}

private void changeText() {
    mPreferences.edit().putString("response",responseText).commit();
    recreate();
}
@Override
protected void onActivityResult(
        int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    switch (requestCode) {
        case CAPTURE_MEDIA_RESULT_CODE:
            if (null == data || null == data.getData()) {
               showMessage("Sorry. You didn't save any video");
            } else {
                videoUri = data.getData();
                mProgress = new ProgressDialog(this);
                mProgress.setMessage("Uploading onYoutube ...");

                authorizeIt();// SAY YOU CALL THE changeText() at the end of this method
            }
            break;
    }
}
0
CodeToLife

Dans votre code XML, vous avez utilisé Textview, mais dans le code Java, vous avez utilisé EditText au lieu de TextView. Si vous le changez en TextView, vous pouvez définir Text sur votre objet TextView.

text = (TextView) findViewById(R.id.this_is_the_id_of_textview);
text.setText("TEST");

j'espère que ça va marcher.

0