2012-08-02 6 views
0

나는 아주 엉망진창이었습니다. 처리기에서 ints을 반환하고 싶습니다. 내 코드는 다음과 같습니다.핸들러에서 int를 반환했습니다.

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를 반환하려면 어떻게해야합니까?

+0

달성하려는 목표에 대해 더 많은 배경 지식을 공유하면 도움이 될 수 있습니다. –

답변

2

클래스에 int 특성을 만들고 처리기가 반환하는 대신 handleMessage() 메서드에 해당 값을 설정하도록합니다.

귀하의 returnValues() 방법은 완전히 쓸모가 없으므로 단지 return i;으로 단순화하여 매개 변수를 반환하지만 아무 것도하지 않습니다.

+0

+1 실제로 해결 방법을 제안하려고 시도하는 것은 뻔뻔스럽게 말하면 해결할 수 없습니다. –

1

void은 아무 것도 반환 할 수 없으므로 작동하지 않습니다. 또한이 기능은

public int returnValues(int i) { 

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

    } 

않습니다. 더 이상 당신은 어떤 방법 으로든 객체를 조작하지 않습니다. Handler 개체의 임의의 특성에 대해 변형 (또는 연산 설정)을 수행하지 않는 함수 returnValues을 호출하고 있습니다. 즉, returnValues이 호출되면 범위를 벗어날 수 있으므로 결과를 폐기한다는 의미입니다.

+0

핸들러는 그가 구현 한 인터페이스이므로 서명 방법이 변경되지 않을 가능성이 있습니다. 그리고 그는 분명히 메서드가 실행 된 후에 현재 클래스에서 int에 액세스하는 방법을 원합니다.이 메서드는이 솔루션으로는 수행 할 수 없습니다. – kgautron

+0

@ 케이 케이 (KayKay). 정확히 내 대답이 정확하지 않았습니까? 공허는 아무것도 반환하지 않으며 그의 액생 기능도 아무 것도하지 않습니다. 나는 명시 적으로 OP가 돌연변이 원을 필요로한다고 말했다. 사실 내 대답은 당신과 거의 동일하므로 불만은 보이지 않습니다. – Woot4Moo

+0

내가 잘못 말한 적 없다. 방금 문제가 해결되지 않는다고 말했습니다. – kgautron

관련 문제