2013-08-14 2 views
0

У меня есть следующая ситуация:Получить переменную из анонимного класса

final String value = null; 
AsyncHttpClient client = new AsyncHttpClient(); 
    client.get("http://www.google.com", new AsyncHttpResponseHandler() { 
     @Override 
     public void onSuccess(String response) {     
      value = response; 
     } 
    });  
    System.out.println(value); 

Я бег этого кода из моего основного класса.

Теперь мне нужно иметь возможность использовать переменную (String Response) из класса over ridden в моем основном классе.

Как я должен собираться получить эту переменную, так как ясно, что у меня нет.

ps, ​​предложить изменить название, я не знаю, как его назвать.

+3

Весь смысл метода Async заключается в том, что вы не можете использовать его сразу. –

ответ

1

Ваша проблема не связана с классами; это то, что вы используете асинхронный код синхронно. Все, что вы хотите сделать с ответом строки, должно быть в обработчике onSuccess (или вызванной им функцией).

+0

Так как же я могу вернуть его в свой основной класс? Мне нужно показать, например, например. список в моем основном классе, который мой асинхронный класс получает от меня. но мне нужно, чтобы он вернул фактический список? Я предполагаю, что мне нужен какой-то шаблон дизайна или техника для его получения? – Zapnologica

+0

@ Zapnologica Вам нужно переосмыслить свой дизайн. Если вам нужно отобразить его сразу, используйте синхронный клиент http. –

+0

@SotiriosDelimanolis Мне нужно отобразить его сразу, но 1: сетевой запрос занимает некоторое время, чтобы получить данные, поэтому его не совсем точно, и 2: с помощью android вы не запускаете такие типы методов в основном действии, как это может привести к тому, что приложение перестанет отвечать на запросы. Так как же мне придется переосмыслить мой дизайн? Что мне нужно сделать? Могу ли я не создавать метод, displaydata (строковые данные) в основном классе, а затем в классе async onsuccess? Я вызываю этот метод? – Zapnologica

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