2011-06-30 25 views
0

TextViewの色を動的に変更する方法を知りたいと思います。そこにはいくつかのものがありますが、今私が探しているものはかなりあるようです。私がここでやっているのは配列を繰り返しているのですが、その "+" ct.setTextColor(.....)でnullポインターエラーが発生している問題は、誰もが何らかの理由があるのですか?ここTextViewの色を動的に変更できますか?

はXMLです:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="?android:attr/listPreferredItemHeight" 
    android:padding="6dip"> 
    <ImageView 
     android:id="@+id/icon" 
     android:layout_width="wrap_content" 
     android:layout_height="fill_parent" 
     android:layout_marginRight="6dip" 
     android:src="@drawable/icon" /> 
    <LinearLayout 
     android:orientation="vertical" 
     android:layout_width="0dip" 
     android:layout_weight="1" 
     android:layout_height="fill_parent"> 
     <TextView 
      android:id="@+id/tt" 
      android:layout_width="fill_parent" 
      android:layout_height="0dip" 
      android:layout_weight="1" 
      android:gravity="center_vertical" 
     /> 
     <TextView 
      android:layout_width="fill_parent" 
      android:layout_height="0dip" 
      android:layout_weight="1" 
      android:id="@+id/bt" 
      android:singleLine="true" 
      android:ellipsize="marquee" 
     /> 
    </LinearLayout> 
    <TextView 
     android:id="@+id/pm" 
     android:layout_width="wrap_content" 
     android:layout_height="fill_parent" 
     android:layout_gravity="right" 
     android:text="-" 

     android:textSize="30sp" 
     android:textStyle="bold" 
     /> 
</LinearLayout> 

とコードsnippit

int c = count; 
    ind = (count); 
    j=0; 
    TextView ct = (TextView)findViewById(R.id.pm); 
    funkAdapter = (new ArrayAdapter<String>(this, R.layout.rowneg, R.id.pm)); 
    String[] tmpAry= new String[count]; 
    for (int i = 0; i < ind; i = i+2){ 
     tmpAry[j] = dataAryArray[i]; 

     if (tmpAry[j].equals("-")){ 
     funkAdapter.add(tmpAry[j]); 
     ct.setTextColor(Color.RED); 
     }else{ 
      funkAdapter.add(tmpAry[j]); 
      ct.setTextColor(Color.GREEN); 

     } 
     j++; 
    } 
    setListAdapter(funkAdapter); 
+0

これはばかげて見えるかもしれませんが、あなたの例外PLZ、 – Houcine

+0

のスタックトレースを追加..しかし、私はどのように行いますこれを得る? logcat? – tricknology

+0

Android SDKを入手したツールフォルダ内のDDMSを使用してスタックトレースを取得できます。電話が接続された状態でDDMSを起動し、赤色(E)記号をクリックしてエラーを表示します。 – Brian

答えて

1

上記のコードスニペットは、あなたがあなたのonCreate()メソッドのうち、コピー・アンド・ペーストし何である場合主な問題私はそれがあなたにnullポインタエラーを与えている理由を知っています。なぜなら、現在のアクティビティのビューをXMLレイアウトに設定していないからです。言い換えれば、findViewById()はあなたが参照しているIDがどこにあるのかわかりません。あなたがfindViewById()を呼び出して、あなたのonCreate()の最初の行にこれを追加してみてください、またはどこかの前に:

setContentView(R.id.yourLinearLayout);

+0

nullPointerExceptionがct.setTextColor()に与えていると彼は言っています。 hieアクティビティの場合、nullpointerExceptionは 'ct =(TextView)findViewById(...)'になります。 – Houcine

+0

それは本当のHoucineではありません。 setContentView()を正しく初期化しないと、現在のアクティビティで参照されているビューが見つからない場合、findViewById()は単にnullを返します。彼がそのビューを使用しようとするまで(すなわち、ct.setTextColor()を呼び出す)、TextViewが実際にはnullであるため、クラッシュすることはありません。 – Brian

+0

私はそれを知っていますが、progammはct.setTextColor()で例外を通知します。TextViewがnullの場合、例外はfindViewById()で通知されます。 – Houcine

関連する問題