/ / Accéder au champ TextView à partir de la mise en page XML en utilisant l'inflation? - android, android-layout

Accéder au champ TextView depuis une mise en page XML en utilisant l’inflation? - android, android-layout

Je suis relativement nouveau dans la programmation Android et je suisayant un problème d'inflation. J'essaie de créer une activité simple qui crache quelques champs descriptifs à partir d'un élément ListView précédemment sélectionné.

Je peux accéder aux données sources depuis ListViewsans aucun problème, mais l'activité suivante pour afficher les données sélectionnées ne fonctionne pas. Plus précisément, l'extrait de disposition XML suivant (dans layout / info.xml) et le code correspondant génèrent une activité qui s'affiche correctement, mais n'affiche pas la chaîne "XYZZY" comme souhaité (comme indiqué ci-dessus, la chaîne est normalement obtenue dynamiquement à partir de ListView, mais est simplifiée en une chaîne codée en dur pour cet exemple).

Qu'est-ce que je fais mal? Voici l'extrait XML:

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@color/black"
android:padding="10dp" >

<!-- Info text -->
<TextView
android:id="@+id/infoname"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_margin="12dp"
android:gravity="center_horizontal"
android:textColor="@color/white"
android:textSize="24sp" />

...

</RelativeLayout>

Et voici l'extrait java:

@Override
public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
setContentView(R.layout.info);

LayoutInflater li = getLayoutInflater();
View infoView = li.inflate(R.layout.info, null);

TextView name = (TextView) infoView.findViewById(R.id.infoname);
name.setText("XYZZY");

...

}

Réponses:

2 pour la réponse № 1

en définissant contentView (), vous n'avez pas besoin de gonfler vous-même. La raison pour laquelle vous ne voyez pas votre texte est que la disposition gonflée n'est pas ajoutée à la hiérarchie des vues.

@Override
public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
setContentView(R.layout.info);

TextView name = (TextView) findViewById(R.id.infoname);
name.setText("XYZZY");

...

}

0 pour la réponse № 2

Vous ne pouvez pas définir setContentView (R.layout.info) et gonfler dans la même activité pour la même mise en page, choisissez l'une des approches. Pour votre exemple ci-dessus, il y a le bon code:

@Override
public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

LayoutInflater li = getLayoutInflater();
View infoView = li.inflate(R.layout.info, null);

setContentView(infoView);
TextView name = (TextView) infoView.findViewById(R.id.infoname);
name.setText("XYZZY");

...

}