0
我要求用戶觸摸TextView1,並需要打印他在TextView2上觸摸的'x'軸位置。但是,每當我輕觸TextView1,我的應用 「無奈停止」 在一種與設備 這-testing是類:第三部分Android運行時錯誤使用OnTouchListenner
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;
}}
這是activity_part3:
<?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>
和logcat的:
09-29 15:14:27.043: W/dalvikvm(8454): threadid=1: thread exiting with uncaught exception (group=0x2b542210)
09-29 15:14:27.063: E/AndroidRuntime(8454): FATAL EXCEPTION: main
09-29 15:14:27.063: E/AndroidRuntime(8454): android.content.res.Resources$NotFoundException: String resource ID #0x121
09-29 15:14:27.063: E/AndroidRuntime(8454): at android.content.res.Resources.getText(Resources.java:247)
09-29 15:14:27.063: E/AndroidRuntime(8454): at android.widget.TextView.setText(TextView.java:3495)
09-29 15:14:27.063: E/AndroidRuntime(8454): at bnabaei.touchrecorder.Part3.onTouch(Part3.java:36)
09-29 15:14:27.063: E/AndroidRuntime(8454): at android.view.View.dispatchTouchEvent(View.java:5559)
09-29 15:14:27.063: E/AndroidRuntime(8454): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2058)
09-29 15:14:27.063: E/AndroidRuntime(8454): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1785)
09-29 15:14:27.063: E/AndroidRuntime(8454): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2058)
09-29 15:14:27.063: E/AndroidRuntime(8454): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1785)
09-29 15:14:27.063: E/AndroidRuntime(8454): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2058)
09-29 15:14:27.063: E/AndroidRuntime(8454): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1785)
09-29 15:14:27.063: E/AndroidRuntime(8454): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2058)
09-29 15:14:27.063: E/AndroidRuntime(8454): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1785)
09-29 15:14:27.063: E/AndroidRuntime(8454): at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1931)
09-29 15:14:27.063: E/AndroidRuntime(8454): at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1390)
09-29 15:14:27.063: E/AndroidRuntime(8454): at android.app.Activity.dispatchTouchEvent(Activity.java:2364)
09-29 15:14:27.063: E/AndroidRuntime(8454): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1879)
09-29 15:14:27.063: E/AndroidRuntime(8454): at android.view.View.dispatchPointerEvent(View.java:5766)
09-29 15:14:27.063: E/AndroidRuntime(8454): at android.view.ViewRootImpl.deliverPointerEvent(ViewRootImpl.java:2890)
09-29 15:14:27.063: E/AndroidRuntime(8454): at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2466)
09-29 15:14:27.063: E/AndroidRuntime(8454): at android.view.ViewRootImpl.processInputEvents(ViewRootImpl.java:845)
09-29 15:14:27.063: E/AndroidRuntime(8454): at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2475)
09-29 15:14:27.063: E/AndroidRuntime(8454): at android.os.Handler.dispatchMessage(Handler.java:99)
09-29 15:14:27.063: E/AndroidRuntime(8454): at android.os.Looper.loop(Looper.java:137)
09-29 15:14:27.063: E/AndroidRuntime(8454): at android.app.ActivityThread.main(ActivityThread.java:4441)
09-29 15:14:27.063: E/AndroidRuntime(8454): at java.lang.reflect.Method.invokeNative(Native Method)
09-29 15:14:27.063: E/AndroidRuntime(8454): at java.lang.reflect.Method.invoke(Method.java:511)
09-29 15:14:27.063: E/AndroidRuntime(8454): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
09-29 15:14:27.063: E/AndroidRuntime(8454): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
09-29 15:14:27.063: E/AndroidRuntime(8454): at dalvik.system.NativeStart.main(Native Method)
投
x
到String
謝謝你非常非常非常感謝!它現在有效!想知道爲什麼它不是編譯時錯誤? – 2014-09-30 01:52:45從技術上講,它不是編譯錯誤,編譯器無法知道x不會成爲字符串資源的值,因爲資源ID可以(並且確實)更改 – panini 2014-09-30 09:16:59