2014-01-26 2 views
0

Я использую «onTouchListener» в Android для кнопки.Android Button isPressed

B.setOnTouchListener (

  new OnTouchListener() { 
       @Override 
       public boolean onTouch(View v, MotionEvent event) { 
        Log.d(G.AN,"ButtonID: "+B.getId()); 
        mEvent = event.getAction(); 
        Log.d(G.AN,"Event: " + mEvent); 
         H.post(RN); 
         return false; 
       } 
      } 
     ); 

«RN» является работоспособным, где я хочу проверить через регулярные промежутки времени, если кнопка все еще нажата. Однако, когда я использую IsPressed() функцию, она всегда возвращает меня "ложь"

@Override public void run() { 
      Log.d(G.AN,"ButtonID: "+B.getId()); 
      switch(mEvent) { 


      case MotionEvent.ACTION_UP: 
       H.removeCallbacks(RN); 
       break; 

      case MotionEvent.ACTION_DOWN: 
       Delay = 300; 

      default: 
       **if(!B.isPressed())** { 
        Log.d(G.AN,"Button is not pressed"); 
        return; 
       } 
       if(!IsIndex) { ........................ 

ли действительно работает IsPressed функция? есть androiders там, кто использовал это так?

Спасибо заранее ...

+0

никаких проблем с isPressed() - работает как ожидается – pskink

+0

его штраф isPressed() –

ответ

0

Я не уверен, что ... может быть, у должен вызвать setpressed (истина) в onTouch-методом на ACTION.DOWN motionevent и setpressed (ложь) на ACTION_UP

0

Попробуйте осуществить это:

B.setOnTouchListener(new OnTouchListener() { 

     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      if (event.getAction() == MotionEvent.ACTION_DOWN) { 
       Delay = 300; 
       return true; 
      } 
      else if (event.getAction() == MotionEvent.ACTION_UP){ 
       H.removeCallbacks(RN); 

      } 

      return false; 
     } 
    }); 

и Вам необходимо импортировать:

import android.view.MotionEvent;