2014-02-14 3 views
0

вот пример того, что я пытаюсь сделатьМожно ли перевести вызов внешнего вложенного класса в java?

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 хорошо, я как бы подсчитываю интерфейс как класс ... так что вам нужен интерфейс, класс, который излучает сигнал и класс, который получает сигнал ... но если вы не считаете интерфейс как класс, тогда вам нужно всего два ... но проблема в том, что этот класс вложен. –

ответ

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); 
    } 
} 
Смежные вопросы