如果我触摸设备屏幕,为什么我的应用程序在更改按钮文本时会在设备上崩溃?

时间:2013-01-21 08:02:39

标签: android eclipse

我添加到activitiy java文件中:

@Override
public boolean onTouchEvent(MotionEvent event) {
    Button p1_button = (Button)findViewById(R.id.mybutton);
    p1_button.setText("Some text");
    return super.onTouchEvent(event);
}

我添加后:

Button p1_button = (Button)findViewById(R.id.mybutton);
p1_button.setText("Some text");

当我触摸设备上的屏幕时,应用程序崩溃了。 如果我在触摸设备上的屏幕时删除这两行不会做任何事情,但也不会崩溃。

这是添加按钮的主要xml文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<LinearLayout
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<FrameLayout
    android:id="@+id/videoview" 
    android:layout_width="720px"
    android:layout_height="480px"/>
<Button
    android:id="@+id/mybutton" 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="REC"
    android:textSize="12dp"/>
</LinearLayout>
</LinearLayout>

当我触摸设备上的屏幕时,我想这样做会更改按钮文字。 我该怎么办?

1 个答案:

答案 0 :(得分:1)

因为在此上下文中您不存在该按钮,您正试图找到它。在班级中将按钮定义为static,然后在onCreate

中找到它
static Button p1_button;

...

protected void onCreate(...){
 ....
p1_button =(Button)findViewById(R.id.mybutton);
}

然后使用p1_button

中的onTouchEvent变量

您可以传递onTouchEvent中的活动

final Activity activity = this;

然后

@Override
public boolean onTouchEvent(MotionEvent event) {
    Button p1_button = (Button)activity.findViewById(R.id.mybutton);
    p1_button.setText("Some text");
    return super.onTouchEvent(event);
}