从处理程序返回int

时间:2012-08-02 13:17:35

标签: java

我有一个非常非常混乱的方法。我想从处理程序返回ints。我的代码是这样的:

public void getCasesFromFolder() {

    msg = handler.obtainMessage();


    timer.schedule(new TimerTask(){
          public void run(){
              if(folder.list().length == 0)  {
                  msg.obj = "0";
                  handler.sendMessage(msg);
              }

              else {
                    msg.obj = Integer.toString(folder.list().length) ;
                    handler.sendMessage(msg);
              }

          }
    }, delay, 3000);
}

private Handler handler = new Handler() {

    @SuppressWarnings("unchecked")
    @Override
    public void handleMessage(Message m) {

        String message = (String) m.obj;
        if(message.equals("0")) {
            returnValues(0); 
        }
        else {
            returnValues(Integer.parseInt(message));
        }

    }

    public int returnValues(int i) {

        if(i == 0)
            return 0;
        else
            return i; 

    }
};

当然,这不起作用。如何从处理程序返回int?

2 个答案:

答案 0 :(得分:2)

在类中创建一个int属性,并使您的处理程序在handleMessage()方法中设置其值而不是返回它。

顺便说一下,你的returnValues()方法完全没用,因为它可以简化为只return i;,只会返回参数。

答案 1 :(得分:1)

它不起作用,因为void无法返回任何内容。还有这个功能:

public int returnValues(int i) {

        if(i == 0)
            return 0;
        else
            return i; 

    }

绝对没有。此外,您不会以任何方式操纵对象。您正在调用函数returnValues,该函数不对Handler对象的任何属性执行变异(或设置操作)。这意味着当调用returnValues时,您只是丢弃结果,因为它将超出范围。