我写了一个带有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;
}
}
所以我得到的消息是它“有效”,但它并没有像过去那样对触摸事件作出反应......
答案 0 :(得分: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;
}
});