TextView не инициализируется - PullRequest
       18

TextView не инициализируется

0 голосов
/ 21 сентября 2010

У моего макета xml есть Tablelayout с TextViews для ячейки:

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


        }
}

Код компилируется нормально, и приложение запускается. При запуске приложения я получаю исключение nullpointer. Когда я отлаживаю, я вижу, что tvStyleName является нулем. Любые предложения относительно того, почему это не будет инициализировать

Ответы [ 2 ]

0 голосов
/ 27 декабря 2012

Это связано с разными взглядами с одинаковым идентификатором (android: id в xml). В другом файле макета может присутствовать текстовое представление с тем же идентификатором.

0 голосов
/ 21 сентября 2010

Решена проблема.

Изменено:

<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

...