0

私は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");

デバイスの画面に触れると、アプリケーションがクラッシュします。デバイスの画面に触れたときにこの2行を削除しても何も起こらないだけでなく、クラッシュもしません。

これは、ボタンが追加されるメインの 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 に答える