2012-01-18 71 views
0

我正在研究一个应用程序,允许用户在屏幕上拖动一个点并设置距离值。我想要的是半屏幕的拖动功能,另一半与小工具(按钮和textViews)。要做到这一点,我创建扩展SurfaceView类,使用位图“点”和功能的onTouchEvent,在我的xml文件我喜欢下我的看法引用:Android:无法从onTouchEvent动态更新textView文本

<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函数添加的setText()函数为我的TextView:

@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; 
} 

它给了我这样的错误

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) 

我不能用我的TextView在我DragView类。这是正常的吗?如有需要,我可以提供更多解释。

编辑: 使用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 2012-01-18 15:26:16

+0

“它给了我像NullPointerException异常” - 如果你不提供产生NPE的代码和异常的堆栈跟踪,你希望我们能够提供帮助吗? LogCat至少请 – Guillaume 2012-01-18 15:32:27

+0

@Guillaume你是对的。我编辑了我的问题。 – Anila 2012-01-18 15:33:46

回答

1

我回答我的问题,但请注意,我只是放在一起其他人给出的解决方案(ReubenScrattonlazeR),这样如果别人有同样的问题,他会找到整个解决方案。 因此,解决办法:首先,而不是访问的我textView直接我有,因为如果你使用

tv=(TextView)findViewById(); 

您使用View.findViewById()将只能通过子视图搜索使用

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

您要使用的Activity.findViewById()ReubenScratton

而对于我的第二个问题,因为我是直接用一个int到setText()功能也不能正常工作,但由于拉泽的评论我注意到了这一点并找到解决方案。感谢所有帮助我的人:)。