2010-09-21 4 views
0

Ma initialise mise en page a un xml TableLayout avec TextViews pour une cellule:TextView ne

<?xml version="1.0" encoding="utf-8"?> 
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:stretchColumns="1"> 
    <TableRow> 
     <TextView 
      android:text="Style Details..." 
      android:padding="3dip" /> 

    </TableRow> 
    <TableRow> 
     <TextView 
      android:text="Style" 
      android:padding="3dip" /> 
     <TextView 
      android:id="@+id/StyleName" 
      android:gravity="right" 
      android:padding="3dip" /> 
    </TableRow> 

    <TableRow> 
     <TextView 
      android:text="Price (Euro)" 
      android:padding="3dip" /> 
     <TextView 
      android:id="@+id/StylePrice" 
      android:gravity="right" 
      android:padding="3dip" /> 
    </TableRow> 
    <TableRow> 
     <TextView 
      android:text="Price for Volume &lt;60&lt;90 pcs" 
      android:padding="3dip" /> 
     <TextView 
      android:id="@+id/PriceVolume6090" 
      android:gravity="right" 
      android:padding="3dip" /> 
    </TableRow> 
    <TableRow> 
     <TextView 
      android:text="Price for Volume &lt;100&lt;250pcs" 
      android:padding="3dip" /> 
     <TextView 
      android:id="@+id/PriceVoume100250" 
      android:gravity="right" 
      android:padding="3dip" /> 
    </TableRow> 
    <TableRow> 
     <TextView 
      android:text="Price for Volume &lt;251&lt;500pcs" 
      android:padding="3dip" /> 
     <TextView 
      android:id="@+id/PriceVoume251500" 
      android:gravity="right" 
      android:padding="3dip" /> 
    </TableRow> 
    <TableRow> 
     <TextView 
      android:text="Price for Volume &lt;501pcs" 
      android:padding="3dip" /> 
     <TextView 
      android:id="@+id/PriceVolume501" 
      android:gravity="right" 
      android:padding="3dip" /> 
    </TableRow> 
</TableLayout> 

Je veux définir la valeur de StyleName par mon activité. Le code que j'utilise est le suivant:

import android.app.Activity; 
import android.database.Cursor; 
import android.database.sqlite.SQLiteDatabase; 
import android.os.Bundle; 
import android.util.Log; 
import android.widget.TextView; 

public class StyleDetailsActivity extends Activity { 
private TextView tvStyleName; 


@Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
       setContentView(R.layout.styledetailsview); 
    String styleName = "Testing Style Name"; 
       tvStyleName = (TextView)findViewById(R.id.StyleName); 
    tvStyleName.setText(styleName); 


     } 
} 

Le code compile bien et l'application démarre. En cours d'exécution de l'application, j'obtiens une exception nullpointer. Quand je débogue, je vois que tvStyleName est nul. Toute suggestion quant à pourquoi il ne serait pas initialiser

+1

Etes-vous sûr que l'appel de setContentView() utilise la ressource de mise en page appropriée? setContentView() doit être défini sur la disposition qui inclut TableLayout. – McStretch

+0

oui, la mise en page est définie dans styledetailsview.xml et le code de setContentView est setContentView (R.layout.styledetailsview); – user454284

+0

Si vous commentez cette ligne, votre activité s'affiche-t-elle correctement? Vous ne définissez pas les valeurs Android: layout_width ou android: layout_height, donc je ne suis pas sûr qu'il est capable de dessiner ces textes pour que vous ne puissiez pas y faire référence. – Mike

Répondre

-1

Résolu le problème.

Changé:

<TextView 
      android:id="@+id/StyleName" 
      android:gravity="right" 
      android:padding="3dip" /> 

Pour:

<TextView 
      android:id="@id/StyleName" 
      android:gravity="right" 
      android:padding="3dip" /> 

Ajout d'un élément dans strings.xml pour StyleName

0

Il est dû aux différents points de vue avec le même identifiant (android: id en xml). Il peut y avoir la vue de texte avec le même ID dans un fichier de mise en page différent.