0

我添加到活动 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>

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

4

1 回答 1

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);
}
于 2013-01-21T09:03:48.447 回答