2 myq 26 myq_26 于 2012.11.05 14:48 提问

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
yongyong_21   2012.11.05 17: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
csh_34   2012.11.06 11: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);    
}
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!