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 に答える