web-dev-qa-db-fra.com

Android - Définir le texte sur TextView

J'apprends actuellement un logiciel Android pour un projet scolaire et je n'arrive pas à trouver le moyen de définir le texte de manière dynamique sur un TextView. 

Voici mon code:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_enviar_mensaje);
    err = (TextView)findViewById(R.id.texto);
    err.setText("Escriba su mensaje y luego seleccione el canal.");
}

Cela ne fonctionne pas actuellement et je ne peux pas trouver un moyen de le faire fonctionner ...

Toute aide sera beaucoup sollicitée ... Merci pour le temps, José.

EDIT: Voici le activity_enviar_mensaje.xml

<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:tools="http://schemas.Android.com/tools"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    ...
    tools:context=".EnviarMensaje" >
    ...
    <TextView
        Android:id="@+id/texto"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_alignLeft="@+id/listaVista"
        Android:layout_alignParentBottom="true"
        Android:layout_alignRight="@+id/listaVista"
        Android:text="TextView" />
    ...
</RelativeLayout>

Je ne veux pas dire que le texte affiché ne change pas à tout moment ...

45
progjose

Dans votre mise en page XML:

<TextView
        Android:id="@+id/myAwesomeTextView"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_alignParentTop="true"
        Android:text="Escriba el mensaje y luego clickee el canal a ser enviado"
        Android:textSize="20sp" />

Ensuite, dans votre classe d'activité:

// globally 
TextView myAwesomeTextView = (TextView)findViewById(R.id.myAwesomeTextView);

//in your OnCreate() method
myAwesomeTextView.setText("My Awesome Text");

METTEZ CE CODE DANS VOTRE XML

<TextView
    Android:id="@+id/textview1"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"/>

METTEZ CE CODE DANS VOTRE FICHIER Java

// Déclarer des composants comme TextView Globally est une bonne habitude

TextView mTextView = (TextView) findViewById(R.id.textview1);

// Mettre ceci dans OnCreate

mTextView.setText("Welcome to Dynamic TextView");
15
Ankush Joshi

@+id/listaVista ListView est dessiné après le @+id/texto et par dessus. Alors changez ListView à partir de:

Android:layout_below="@+id/editText1"

à:

Android:layout_above="@+id/texto"

De plus, comme la liste est dessinée après textview, je trouve dangereux d’avoir Android:layout_alignRight="@+id/listaVista" dans TextView. Alors, retirez-le et trouvez un autre moyen de vous aligner. 

EDIT En jetant un second coup d’œil à votre mise en page, je pense que c’est ce que vous voulez vraiment:

<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:tools="http://schemas.Android.com/tools"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:paddingBottom="@dimen/activity_vertical_margin"
    Android:paddingLeft="@dimen/activity_horizontal_margin"
    Android:paddingRight="@dimen/activity_horizontal_margin"
    Android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".EnviarMensaje" >

    <TextView
        Android:id="@+id/textView1"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_alignParentTop="true"
        Android:text="Escriba el mensaje y luego clickee el canal a ser enviado"
        Android:textSize="20sp" />

    <EditText
        Android:id="@+id/editText1"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_alignLeft="@+id/textView1"
        Android:layout_alignRight="@+id/textView1"
        Android:layout_below="@+id/textView1"
        Android:ems="10"
        Android:inputType="text" />

    <TextView
        Android:id="@+id/texto"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_alignLeft="@+id/listaVista"
        Android:layout_alignParentBottom="true"
        Android:text="TextView" />

    <ListView
        Android:id="@+id/listaVista"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_above="@+id/texto"
        Android:layout_alignParentLeft="true"
        Android:layout_below="@+id/editText1" >
    </ListView>

</RelativeLayout>
9
gunar

Pourquoi n'essayez-vous pas d'affecter le contenu de textview à onStart () plutôt qu'à onCreate ()

5
loonighan

En XML, utilisez ceci:

<TextView 
       Android:id="@+id/textView"
       Android:layout_width="wrap_content"
       Android:layout_height="wrap_content"/>

Dans Activité, définissez la vue:

Textview textView=(TextView)findViewById(R.id.textView);
textView.setText(getResources().getString(R.string.txt_hello));

Dans le fichier de chaîne:

<string name="txt_hello">Hello</string>

Sortie: Bonjour

5
Shivam Kumar

J'avais un problème similaire. Il s'avère que j'avais deux objets TextView avec le même ID. Ils étaient dans des fichiers de vue différents et Eclipse ne m'a donc pas donné d'erreur. Essayez de renommer votre identifiant dans TextView et voyez si cela ne résout pas votre problème.

4
holy moly

Essaye ça:

TextView err = (TextView)findViewById(R.id.text);

Assurez-vous d'importer TextView.

4
samuel

Dans le fichier de mise en page.

<TextView
   Android:id="@+id/myTextView"
   Android:layout_width="match_parent"
   Android:layout_height="wrap_content"
   Android:text="Some Text"
   Android:textSize="18sp"
   Android:textColor="#000000"/>

En activité

TextView myTextView = (TextView)findViewById(R.id.myTextView);
myTextView.setText("Hello World!");
4
Vishal Chhodwani

dans votre activity_main.xml collez ce code:

            <TextView
                 Android:id="@+id/name"
                 Android:layout_width="wrap_content"
                 Android:layout_height="wrap_content"
                 Android:layout_alignParentLeft="true"
                 Android:layout_alignParentTop="true"
                 Android:layout_marginLeft="19dp"
                 Android:layout_marginTop="43dp"
                 Android:text="@string/name" />

et allez dans res folder-> values-> strings.xml collez le code ci-dessous avec le code qui existe déjà:

          <string name="name">Escriba su mensaje y luego seleccione el canal.</string>

le code ci-dessus signifie que vous avez créé un textview avec id: name (Android: id = "@ + id/name") et que vous avez affecté ce textview à une chaîne avec un identifiant (Android: text = "@ string/name") dans strings.xml votre utilisant cet identifiant pour assigner le texte,

4
saika

Cela devrait faire l'affaire:

TextView.setText("test");
3
DenVik

Veuillez corriger la ligne suivante:

err = (TextView)findViewById(R.id.texto);

à:

err = (TextView)findViewById(R.id.err);
3
Raiyus13

En fichier XML,

<TextView
       Android:id="@+id/textview"
       Android:layout_width="wrap_content"
       Android:layout_height="wrap_content"
       Android:text="My Name"
       Android:textColor="#cccccc"/>

Dans le fichier d'activité Java,

public class MainActivity1 extends Activity
 {
   TextView t1;
   public void onCreate(Bundle onSavedInstance)
      {
         setContentView(R.layout.xmlfilename);
          t1 = (TextView)findViewbyId(R.id.textview);
      }
 }
2
Gavine Joyce

Vous pouvez définir une chaîne dans textview par programme comme ci-dessous.

TextView textView = (TextView)findViewById(R.id.texto);
err.setText("Escriba su mensaje y luego seleccione el canal.");

ou 

TextView textView = (TextView)findViewById(R.id.texto);
err.setText(getActivity().getResource().getString(R.string.seleccione_canal));

Vous pouvez définir une chaîne en XML comme ci-dessous.

<TextView
         Android:id="@+id/name"
         Android:layout_width="wrap_content"
         Android:layout_height="wrap_content"
         Android:layout_alignParentLeft="true"
         Android:layout_alignParentTop="true"
         Android:layout_marginLeft="19dp"
         Android:layout_marginTop="43dp"
         Android:text="Escriba su mensaje y luego seleccione el canal." />

ou

<TextView
         Android:id="@+id/name"
         Android:layout_width="wrap_content"
         Android:layout_height="wrap_content"
         Android:layout_alignParentLeft="true"
         Android:layout_alignParentTop="true"
         Android:layout_marginLeft="19dp"
         Android:layout_marginTop="43dp"
         Android:text="@string/seleccione_canal" />
2
duggu

d'abord, vous devriez créer un objet pour la vue texte TextView show_alter 

show_alert = (TextView)findViewById(R.id.show_alert);
show_alert.setText("My Awesome Text");
1
Jerin Stephen

Votre code est ok, vous chargez le fichier .xml contenant la TextView à l'aide de setContentView()

   setContentView(R.layout.activity_enviar_mensaje);

puis obtenir la référence de TextView dans activity_enviar_mensaje.xml et définir un texte: 

err = (TextView)findViewById(R.id.texto);
err.setText("Escriba su mensaje y luego seleccione el canal.");

Le problème est que votre TextView est masqué par la ListView:

 enter image description here

1
Elenasys

Vous devriez utiliser ButterKnife Library http://jakewharton.github.io/butterknife/

Et l'utiliser comme

@InjectView(R.id.texto)
TextView err;

dans la méthode onCreate

ButterKnife.inject(this)
err.setText("Escriba su mensaje y luego seleccione el canal.");
1
Nilesh Panchal

Accédez à votre activité principale et définissez le texte en ajoutant un widget à partir de la section des widgets et en modifiant manuellement le texte en sélectionnant et en tapant.

0

Dans votre mise en page. Votre Texto ne devrait pas contenir (Android: text = ...). Je supprimerais cette ligne. Soit conserver la chaîne Java OR le (Android: text = ...)

0
Salman Mohammed
final TextView err = (TextView)findViewById(R.id.texto);
err.setText("Escriba su mensaje y luego seleccione el canal.");

vous pouvez trouver tout ce dont vous avez besoin dans textview ici

0
Amirhossein Aarb