0

我有一个非常非常混乱的方法。我想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?

4

2 回答 2

2

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

顺便说一句,您的returnValues() 方法完全没用,因为它可以简化为return i;除了返回参数什么都不做。

于 2012-08-02T13:18:55.513 回答
1

它不起作用,因为void不能返回任何东西。还有这个功能:

public int returnValues(int i) {

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

    }

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

于 2012-08-02T13:20:35.750 回答