2012-04-26 5 views
0

Я имею дело с устаревшим кодом. Моя задача - обработать результат асинхронной задачи.Доступ к внешним переменным внутри dispatchMessage

Я застрял в получении доступа к внешним объектам внутри метода dispessMessage. Есть ли какие-либо средства для достижения этого или я должен использовать Синглтон или статические свойства?

До сих пор я создал класс, отвечающий за работу в асинхронном режиме.

private class BackgroundTask extends AsyncTask<Object, Void, Boolean> 
    { 
     @Override 
     protected Boolean doInBackground(Object... params){ 
      // ... 
     } 

     @Override 
     protected void onPostExecute(Boolean result){ 
      // ... 
     } 


    } 

Внутри OnPostExecute или метод doInBackground я хотел бы отправить сообщение с помощью обработчика, поэтому я нажимаю в некоторых простых вещей:

Message m = new Message(); 
Bundle b = new Bundle(); 
b.putString("sizeKEY", "size " + _count); 
m.setData(b); 
_handler.sendMessage(m); 

И мне нужно обращаться к внешним объектам здесь :

new Handler(){ 
@Override 
    public void dispatchMessage(Message msg) { 
       super.dispatchMessage(msg); 
       // get access to, say, Activity property or method here 
      } 
     } 

Как это сделать?

ответ

0

вы можете использовать <MyOuterClass>.this для доступа к внешнему лежащему объекту (потому что вы находитесь во внутреннем классе).

Если ваш внешний класс имеет название «MyActivity» (просто пример), и вы хотите получить доступ к его статистов, то это было бы:

MyActivity.this.getIntent().getExtras() 

См
http://www.java-forums.org/java-tip/6296-inner-class-accessing-outer-class.html

Смежные вопросы