2010-09-21 128 views
0

我的布局XML具有Tablelayout与TextViews的细胞:的TextView没有初始化

<?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> 

我想通过我的活动来设置StyleName和值。以下是我正在使用的代码:

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); 


     } 
} 

代码编译正常,应用程序启动。在运行应用程序时,我得到一个空指针异常。当我调试时,我看到tvStyleName为空。任何建议,为什么它不会初始化

+1

您确定对setContentView()的调用正在使用适当的布局资源吗? setContentView()应该设置为包含TableLayout的布局。 – McStretch 2010-09-21 18:23:05

+0

是的,布局是在styledetailsview.xml中定义的,而setContentView的代码是setContentView(R.layout.styledetailsview); – user454284 2010-09-21 18:26:03

+0

如果您注释掉该行,您的活动是否正确显示?你没有设置任何android:layout_width或android:layout_height值,所以我不确定它能够绘制这些文本,所以你不能得到对它们的引用。 – Mike 2010-09-21 18:32:43

回答

-1

解决了这个问题。

更改:

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

要:

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

中添加一个strings.xml中的项StyleName和

0

这是由于具有相同id(机器人不同的观点:ID在xml)。可能会在不同的布局文件中使用相同的ID呈现文本视图。