myq_26
2012-11-05 06:48
采纳率: 80%
浏览 4.2k

android中如何在另一个函数中调用监听器

现在有以下的代码,想在另一个函数和另一个类中调用这个监听器,加入什么样的代码能实现这个功能啊?

public boolean dispatchTouchEvent(MotionEvent ev) {        
     if (ev.getAction() == MotionEvent.ACTION_UP) {    
         Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);    

         Random r=new Random();    
         int i1=(r.nextInt(500) +4000);    

         v.vibrate(i1);    
   }    
   return super.dispatchTouchEvent(ev);    
}   
  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • yongyong_21 2012-11-05 09:10
    已采纳

    你需要创建一个类来继承监视器

    public class MyListener implements OnClickListener {
    
        private Context context;
    
        public MyListener(Context context) {
            super();
            this.context = context;
        }
    
        @Override
        public void onClick(View v) {
            Toast.makeText(context, "just a test", 2000).show();
        }
    }
    

    在Activity中要添加:

    public class ListenerTestActivity extends Activity {
        /** 当activity第一次被创建时要调用 */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
    
            Button button = (Button) findViewById(R.id.button1);
    
            button.setOnClickListener(new MyListener(this));
        }
    }
    
    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • csh_34 2012-11-06 03:13

    例如创建一个类 MyUtils和static public方法,然后从你的监听器中调用这个静态方法。

    public class MyUtils {
        static public void vibrate(Context context) {
            Vibrator v = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);    
    
            Random r=new Random();    
            int i1=(r.nextInt(500) +4000);    
    
            v.vibrate(i1);    
        }
    }
    

    public boolean dispatchTouchEvent(MotionEvent ev) {        
        if (ev.getAction() == MotionEvent.ACTION_UP) {    
            MyUtils.vibrate(this);
        }    
        return super.dispatchTouchEvent(ev);    
    }
    
    评论
    解决 无用
    打赏 举报