2013-04-03 48 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);