我正在研究一个应用程序,允许用户在屏幕上拖动一个点并设置距离值。我想要的是半屏幕的拖动功能,另一半与小工具(按钮和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)
如果你可以提供一段代码来调用'setText()'和logcat输出,那将很方便。 – mdelolmo 2012-01-18 15:26:16
“它给了我像NullPointerException异常” - 如果你不提供产生NPE的代码和异常的堆栈跟踪,你希望我们能够提供帮助吗? LogCat至少请 – Guillaume 2012-01-18 15:32:27
@Guillaume你是对的。我编辑了我的问题。 – Anila 2012-01-18 15:33:46