2013-04-03 67 views
0

我得到了Android Java中處理程序的代碼片段,它告訴我刪除postDelayed參數周圍的括號。聲明處理程序錯誤

Handler handler = new Handler(); 
handler.postDelayed (runable, minute); 
private Runnable runnable = new Runnable() 
{ 
    @Override 
    public void run() 
    { 
     biomass = biomass +1; 
    } 
}; 

我想讓程序在一分鐘後增加1的生物量。 分鐘已被聲明爲int minute = 60000;

我使用的代碼片段是在這裏:www.mopri.de/2010/timertask-bad-do-it-the-android-way-use-a-handler/

+0

這並不編譯之前訪問可運行。我建議你發佈你的實際代碼。可運行的聲明和對postDelayed的調用不能與你編寫它們的方式在相同的範圍內(java 101) – njzk2

+0

我並不是100%確定你的意思是範圍;我理解它意味着訪問權限(私人,包裹,公共)。 –

+0

作用域意味着您的runnable聲明看起來在方法之外,因爲runnable是成員(由存在修飾符表示),而對postDelayed的調用必須在方法或靜態塊中。 – njzk2

回答

0

您可以暫停你的線程/可運行與了Thread.sleep(6000),其中6000是毫秒

的數目
private Runnable runnable = new Runnable() 
{ 
    @Override 
    public void run() 
    { 
     Thread.sleep(6000); 
     biomass = biomass +1; 
    } 
}; 

新主題(可運行)。開始();

+0

這似乎是暫停整個應用程序,並等待一分鐘才做完其他事情 –

+0

aouch。這一天最糟糕的解決方案。 – njzk2

+0

我正在問我的姐姐,她試過了,它工作。雖然我確實發現其他答案更有趣。 –

1

試試這個:

final Handler handler = new Handler(); 
         handler.postDelayed(new Runnable() { 
          public void run() { 
           biomass = biomass +1; 
          } 
         }, 6000); 
0

您正在定義it.private不能被定義有

Handler handler = new Handler(); 
    final Runnable runnable = new Runnable() 
    { 
     @Override 
     public void run() 
     { 

     } 
    }; 
    handler.postDelayed (runnable,c);