2016-04-13 17 views
0

Sonunda duracak postdulay işleyiciyi kullanarak ve bir düğmeyi tıklattıktan sonra aynı sıralamayı tekrar eden bir içeriği dört kez değiştiren bir metin görünümü oluşturmaya çalışıyorum (her defasında bir seri halinde).android rerun handler postdelayed

Bazı nedenlerden ötürü anlayamadım, ikinci kez, dizinin sadece bir kısmı oynatılırken geriye kalan içerik görünmüyor.

kodların bir örneği olarak

Handler handler = new Handler(); 

@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.page); 

    delay1(); 

    button1.setOnClickListener(new View.OnClickListener(){ 
    public void onClick(View v) { delay1(); }});  

} 

private void delay1() 
{  
    final TextView textvie = (TextView) findViewById(R.id.textvi); 

    if(apple >= 1) 
    {  
     handler.postDelayed(new Runnable() { 
     public void run() { textvie.setText(" "); 
     if(apple == 1) { stop_n_display(); to_stop = 1; } } 
     }, 700); 
    } 
    if(apple > 0) 
    {  
     handler.postDelayed(new Runnable() { 
     public void run() { textvie.setText("1 "; } 
      }, 710);  
    } 
    if(apple >= 2) 
    { 
     handler.postDelayed(new Runnable() { 
     public void run() { textvie.setText(" "); 
      if(apple == 2) { stop_n_display(); to_stop = 1; } } 
      }, 1400);  
    } 

    if((apple > 1) & (to_stop != 1)) 
    {   
     handler.postDelayed(new Runnable() { 
     public void run() { textvie.setText("2 "; } 
     }, 1410); 
    } 
    if(apple >= 3) 
    {  
     handler.postDelayed(new Runnable() { 
     public void run() { textvie.setText(" "); 
      if(apple == 3) { stop_n_display(); to_stop = 1;} } 
      }, 2100); 
    }    
    if((apple > 2) & (to_stop != 1)) 
    {    
     handler.postDelayed(new Runnable() { 
     public void run() { textvie.setText("3 "; } 
      }, 2110); 
    } 
    if(apple >= 4) 
    { 
     handler.postDelayed(new Runnable() { 
     public void run() { textvie.setText(" "); 
      if(apple == 4) {stop_n_display(); to_stop = 1;} } 
     }, 2800);  
    }  
    if((apple > 3) & (to_stop != 1)) 
    {      
     handler.postDelayed(new Runnable() { 
     public void run() { textvie.setText("4 "; } 
     }, 2820); 
    } 
} 

Günlerdir onu anlamaya çalışıyorum Been ama sorunu bulmaya gibi olamaz izler. Lütfen yardım et. Yukarıdaki yöntemde herhangi bir doğrudan düzeltmeyi veya herhangi bir alternatifi takdir ediyorum. Şimdiden teşekkürler.

cevap

0

Bu sadece değil

if(apple >= 1){ 
if(apple >= 2){ 
if(apple >= 3){ 
if(apple >= 4){ 

Çünkü elma> 0 olarak çağrı

if(apple >0){ 

çağrısı senin sorunun

if(apple > 0){  
if(apple >= 1){ 
if(apple >= 2){ 
if(apple >= 3){ 
if(apple >= 4){  

olduğunu. Yerine her zaman> düzeltme 2, 3, 4

:

if(apple > 0 && apple <1){ 

} 

if(apple >= 1 && apple < 2){ 

} 

if(apple >= 2 && apple < 3){ 

} 

if(apple >= 3 && apple < 4){ 

} 
+0

Elma koşullarını daha önce çıkarmayı denedim ama işe yaramadı. Ben şimdi düzeltmeyi kabul ettim ve işe yaramıyor. Açıklığa kavuşturmak için, 'elma', bu dizinin 1 ila 4 katı arasında herhangi bir sayı olabilen değişikliklerin sayısını saymaktır. Sadece basitlik için 4 kez kaydettim. Ayrıca, dizi ilk durumda iyi çalışır. Düğmeye tıklandığında yalnızca sonraki içeriği (ilk hariç) görüntülemez. – visibility

0

Örnek kod numaralarını geri saymaya. dealy1() yöntemi bir düğmeye onClick ..

int apple; 
private void delay1() { 
    apple = 0;//sequence start from 0 
    final TextView textvie = (TextView) findViewById(R.id.textvi); 
    handler.postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      textvie.setText(String.valueOf(apple++));//series 0 1 2 3 4 
      if (apple != 5)//stop counting when apple reaches 5 
       handler.postDelayed(this, 1000);//one sec delay 
     } 
    }, 1000);//one sec delay 
} 

Happy_Coding Çağrı;

+0

Teşekkürler. Eğer elma değeri değişikliklerin arasında değişiyorsa kodları benimle paylaşabilir misiniz, yani her biri için 1 sn değil, onu uygulamaya çalışabilirim? – visibility

+0

Bir sonraki sayımın farklı aralıklarına sahip olduğunu söylemeyi kastediyorum ... – Bharatesh

+0

Evet. Duraklama 20 ms ve 700 ms süren gerçek metin için bir gecikme var. – visibility

İlgili konular