2014-02-14 1 views
0

여기 내가이 콜백 시스템을 얻을 수있는 방법자바에서 외부 중첩 클래스를 다시 호출 할 수 있습니까?

public class BookModel { 

     private void update_method() { 
      get_info task = new get_info(this) 
      task.exicute(some args); 
     } 

     public void finishedCallback(some_return_type result) { 
     // do some stuff when finsiehd. 
     } 


    class get_info extends AsyncTask<HashMap<String, String>, Void, dataType> 
    { 
     private BookModel bookModel; 

     public get_info (BookModel reset) { 
      bookModel = reset; 
     } 

     @Override 
     protected dataType doInBackground(arg...) 
         some procscessing. 
     } 

     protected void onPostExecute(dataType result) { 
      bookModel.finishedCallback(result); 
     } 
    } 
    } 

은 나뿐만 아니라 inteface을 사용하여 시도 ... 일을 할 노력하고있어 예,하지만 그것은 작동하지 않았다. 인터페이스가있는 3 개의 클래스가 필요하기 때문이라고 생각합니다 (틀린 경우 수정하십시오). 또한 모든 제안에 개방적이지만, 가능하다면 이상적으로는 같은 클래스 내에이 기능을 유지하고 싶습니다. 이것에 대한 어떤 도움도 크게 감사 할 것입니다.

+0

'인터페이스가있는 3 개의 클래스가 있어야합니다.' – njzk2

+0

doInBackground의 선언이 잘못되었습니다. 당신은'protected getProductInfoBriefFull doInBackground (void ...) {' – njzk2

+0

@ njzk2}이 필요합니다. 저는 인터페이스를 클래스로 간주하고 있습니다 ... 그래서 인터페이스를 필요로합니다. 클래스는 emit 신호와 클래스를받습니다. 신호 ...하지만 클래스로 인터페이스를 계산하지 않으면 두 개만 필요합니다 ...하지만 문제는이 클래스가 중첩 된 것으로 보입니다. –

답변

1

시도해보십시오.

이것은 나를 위해 일했습니다.

public class BookModel implements get_info.xyz { 

    private void update_method() { 
     get_info task = new get_info(this); 
     task.exicute(some args); 
    } 

    public void finishedCallback(String result) { 
    // do some stuff when finsiehd. 
    } 

} 
//---------------------------------- 
class get_info extends AsyncTask<HashMap<String, String>, Void, dataType> 
{ 


    private xyz bookModel; 
    public interface xyz 
    { 
     void finishedCallback(String str); 
    } 
    public get_info (xyz reset) { 
     bookModel = reset; 
    } 

    @Override 
    protected dataType doInBackground(arg...) 
        some procscessing. 
    } 

    protected void onPostExecute(dataType result) { 
     bookModel.finishedCallback(result); 
    } 
}