2012-01-18 18 views
0

私はユーザーが画面上の点をドラッグして距離の値を設定するアプリケーションを開発中です。私が望むのは、ドラッグ機能の半画面と、ガジェット(ボタンとtextViews)の半分の画面を持つことです。私は、SurfaceViewを拡張するクラスを作成したビットマップ「ドット」と機能onTouchEventを使用して、私のxmlファイルで、私は私のビューに次のように参照を行うには:Android:onTouchEventから動的にテキストビューのテキストを更新できません

<test1.DragView 
     android:id="@+id/view" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
    /> 
<TextView 
      android:id="@+id/textView" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
    /> 

私が欲しいものを私与えます。しかし、今私はドットの位置を動的に更新したい。これを行うには、私は私のonTouchEvent機能で私のTextViewのためのsetText()関数を追加しました:それは

AndroidRuntime(845): FATAL EXCEPTION: main 
AndroidRuntime(845): java.lang.NullPointerException 
AndroidRuntime(845):  
at test1.DragView.onTouchEvent(DragView.java:87) 
AndroidRuntime(845):  
at android.view.View.dispatchTouchEvent(View.java:5462) 
AndroidRuntime(845): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1953) 

のように私にエラーが発生します

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    x=(int)event.getX(); 
    y=(int)event.getY(); 
    bitmap =BitmapFactory.decodeResource(getResources(), R.drawable.dot); 
    if(x<0) 
     x=0; 
    if(x > width+(bitmap.getWidth()/2)) 
     x=width+(bitmap.getWidth()/2); 
    if(y <0) 
     y=0; 
    if(y > height/2) 
     y=height/2; 
    tv=(TextView) findViewById(R.id.textView); //I declared tv in the beginning of my class 
    tv.setText(x); 
    updateBall(); //it's a function that resets the position of the dot 

    return true; 
} 

私は私のDragViewクラスで私のTextViewを使用することはできません。それは普通ですか?私は必要に応じてより多くの説明を提供することができます。

EDIT: ReubenScrattonの溶液を使用した後、私は今、私のTextViewをアクセスもできますが、私は次のエラーを取得しています:

AndroidRuntime(672): FATAL EXCEPTION: main 
AndroidRuntime(672): android.content.res.Resources$NotFoundException: String resource ID #0x109 
AndroidRuntime(672): at android.content.res.Resources.getText(Resources.java:247) 
AndroidRuntime(672): at android.widget.TextView.setText(TextView.java:3427) 
AndroidRuntime(672): at test1.DragView.onDraw(DragView.java:73) 
+3

'setText()'とlogcat出力を呼び出す場所でコードを提供できるかどうかは分かります。 – mdelolmo

+0

"NullPointerExceptionのようなエラーが表示されます" - NPEを生成するコードと例外のスタックトレースを提供しないと、どうすれば助けてくれると思いますか? LogCatは少なくとも – Guillaume

+0

をお待ちしています。私は私の質問を編集しました。 – Anila

答えて

1

私はちょうど一緒に入れていることを自分の質問に答えるが、注意しています(ReubenScrattonおよびlazeR)他の誰かが同じ問題を抱えている場合、ソリューション全体を見つけることができるようになります。 だから、解決策は:まず第一に代わりのアクセスの直接私はあなたが

tv=(TextView)findViewById(); 

を使用する場合にのみ、子ビューを検索しますView.findViewById()を使用しているので、

tv=(TextView) ((Activity)getContext()).findViewById(R.id.textView) 

を使用する必要がありました textView私。

あなたが、私はそれに気づいた私はそれが動作しますが感謝LAZERさんのコメントにされなかったsetText()機能に直接int型を使用していたとして

そして、私の第二の問題についてActivity.findViewById()ReubenScrattonを使用したいです解決策を見つけました。私を助けたすべての人のおかげで:)。

関連する問題