使用OnTouchListener的Android运行时错误
我要求用户触摸TextView1,并需要打印他在TextView2上触摸的“x”轴位置。然而,每当我触摸TextView1时,我的应用程序“不幸停止”——在设备上测试- 这是课堂:第三部分使用OnTouchListener的Android运行时错误,android,ontouchlistener,Android,Ontouchlistener,我要求用户触摸TextView1,并需要打印他在TextView2上触摸的“x”轴位置。然而,每当我触摸TextView1时,我的应用程序“不幸停止”——在设备上测试- 这是课堂:第三部分 import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.MotionEvent; import android.view.View; import and
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.widget.TextView;
public class Part3 extends Activity implements View.OnTouchListener{
private TextView txtView1;
private TextView txtView2;
float x,y;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_part3);
txtView1=(TextView)findViewById(R.id.Part3_txtView1);
txtView2=(TextView)findViewById(R.id.Part3_txtView2);
x=0;y=0;
this.txtView1.setOnTouchListener(this);
}
@Override
public boolean onTouch(View v, MotionEvent event) {
if (v.getId()==R.id.Part3_txtView1){
x= event.getX();
y= event.getY();
txtView2.setText((int)x);
return true;
}
return false;
}}
这是活动第3部分:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_horizontal"
android:orientation="vertical" >
<TextView
android:id="@+id/Part3_txtView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="30dp"
android:text="@string/Part3_s1"
android:textSize="20sp" />
<TextView
android:id="@+id/Part3_txtView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="x" />
</LinearLayout>
声明它将查找字符串资源以设置为文本,因此
x= event.getX();
y= event.getY();
txtView2.setText((int)x);
系统正在查找资源ID为x
您应该将x
转换为字符串
,以便将值设置为TextView
textView2.setText(String.valueOf(x));
非常感谢!现在可以了!想知道为什么它不是编译时错误?从技术上讲,它不是编译错误,编译器无法知道x不是字符串资源的值,因为资源ID可以(并且确实)更改
textView2.setText(String.valueOf(x));