1

1 つのアクティビティと 1 つのビューでアプリを作成したので、画面に置いた指の座標を取得できます。完璧に機能しました。

問題は次のとおりです。複数のアクティビティを使用して新しいアプリを作成したため、それらを意図的に変更できます。もうまくいきました。しかし、1 つのアクティビティは、指の位置を教えてくれるものでなければなりません。だから私はクラスと活動をコピーしてそれらをマニフェストに入れました。ボタンを作成し、それを実行するつもりです。したがって、実行しようとすると、クラスが作成されますが、onTouchEventsに反応しなくなります...そして、理由がわかりません。皆さんが理解できるように、私の問題を十分に説明したことを願っています。

これが私の主な活動です。非労働者階級に行くオプションでメニューを開始します

public class V1_2 extends Activity implements OnClickListener{
    Button btn_1;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_v1_2);

        btn_1 = (Button) findViewById(R.id.button1);
        btn_1.setOnClickListener(this);

    }

    public void onClick(View v) {
        if( btn_1.getId() == ((Button)v).getId() ){
            startActivity(new Intent(this,Obj_recog.class));
        }
    }

これは、touchevents の touchpiont クラスを作成するアクティビティになりました。

public class Obj_recog extends Activity implements OnClickListener{
    touchtest TP;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.blank);
        TP = new touchtest(this);
    }

    public void onClick(View v) {

    }

そして今、ここではうまくいかないが、最後のプロジェクトで同じようにうまくいった例

public class touchtest extends View{

    public touchtest(Context context) {
        super(context);
        Log.d("worked", "worked");

    }
    @Override
    public boolean onTouchEvent(MotionEvent ev) {
        Log.d("Touch", "TOUCH!!!!");
        return true;
    }

}

そのため、「機能した」というメッセージが表示されますが、以前のようにタッチイベントに反応しません...

4

1 に答える 1

0

setcontentview を使用して touchtest ビューをメイン ビューとして追加し、そのビューに touchlistener を追加して touchtest クラスから ontouchevent を呼び出すと、うまくいきます。コードは次のようになります --

 TP = new touchtest(this);
    setContentView(TP);
    TP.setOnTouchListener(new View.OnTouchListener() {

        public boolean onTouch(View v, MotionEvent event) {
            // TODO Auto-generated method stub

                            TP.onTouchEvent(event);

            return false;
        }
    });

このアプローチを変更して、この方法で実装する別の方法を見つける必要があると思います。

このようにして、空白のレイアウトと TP を維持できます。

RelativeLayout rl = (RelativeLayout) findViewById(R.id.rl);
TP = new touchtest(this);
    rl.addView(TP);

    TP.setOnTouchListener(new View.OnTouchListener() {

        public boolean onTouch(View v, MotionEvent event) {
            // TODO Auto-generated method stub

                            TP.onTouchEvent(event);

            return false;
        }
    });
于 2012-09-06T15:55:20.470 に答える