2013-05-18 3 views
0

У меня есть следующий код:Android Runnable не работает на Android 2.3?

btn.setOnTouchListener(new OnTouchListener() { 

      @Override 
      public boolean onTouch(View v, MotionEvent event) { 

       if (event.getAction() == MotionEvent.ACTION_DOWN) { 
        v.post(pressed); // put the runnable 'pressed' in the 
             // asynchrone message queue 
       } 

       return false; 
      } 
     }); 

private Runnable pressed = new Runnable() { 

     @Override 
     public void run() { 


      if (btn.isPressed()) { 
       sky.drawEverything(); 
btn.postDelayed(pressed, 10); 
      } 
     } 

    }; 

Это работает как шарм для андроид 4.1.2, но если я попробовать его на андроид 2.3 Runnable, кажется, остается неуправляемыми газовыми. Все, что я использую, это api 1 или выше, так почему это не работает?

Каков альтернативный способ архивирования одного и того же результата и заставить его работать с более старыми версиями Android?

+0

звук странный. Код должен работать и на Android 2.3. – Blackbelt

+0

define «Runnable, кажется, остается неиспользуемым» – pskink

+0

Извините, если я не понял. Я имею в виду, что код, помещенный в метод run Runable, не запускается. – MeesterPatat

ответ

1

Он не уверен :) этот код отлично работает на 4+ и в 2.3.6. У меня есть проблемы с строкой if (btn.isPressed()), по какой-то причине это не возвращает true. Вот рабочий взлом на Samsung Galaxy S 2.3.6

btn.setOnTouchListener(new OnTouchListener() { 

     @Override 
     public boolean onTouch(View v, MotionEvent event) { 

      if (event.getAction() == MotionEvent.ACTION_DOWN) { 
       v.setPressed(true); 
       v.post(pressed); // put the runnable 'pressed' in the 
            // asynchrone message queue 
      } 
      if(event.getAction() == MotionEvent.ACTION_UP){ 
       v.setPressed(false); 
      } 

      return false; 
     } 
    }); 
} 

private Runnable pressed = new Runnable() { 

     @Override 
     public void run() { 
      if (btn.isPressed()) { 
       //sky.drawEverything(); 
       btn.postDelayed(pressed, 10); 
      } 
      else { 
            //Print something or whatever 
      } 
     } 

    }; 

Надеюсь, это поможет вам и вам понравится.

+0

Он работает! Спасибо, человек, я люблю тебя. – MeesterPatat

+1

В любое время. Просто запомните в другое время, изолируйте свою проблему и запишите шаг за шагом, чтобы узнать, в чем проблема. Терпение - необходимость в этой работе. –

Смежные вопросы