Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用OnTouchListener的Android运行时错误_Android_Ontouchlistener - Fatal编程技术网

使用OnTouchListener的Android运行时错误

使用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

我要求用户触摸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 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));