1

我写了一个有 1 个活动和 1 个视图的应用程序,所以它给了我放在屏幕上的手指的坐标。工作完美。

现在的问题是:我创建了一个具有多个 Activity 的新应用程序,因此我可以根据意图在它们之间进行更改。也工作得很好。但是一项活动应该是给我手指位置的活动。所以我复制了课程和活动将它们放入清单中。并制作了一个按钮并打算运行它。因此,当我尝试运行它时,它会创建类但不再对我的 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 回答