2013-11-27 135 views
0

我有在UI線程中運行代碼的內部類,我需要將變量傳遞給run()方法。變量沒有從內部類訪問

我試圖通過沒有數組的最終資源,但我有一個錯誤,它有必要使用數組res [0]。 在這種情況下,我需要初始化res [],因爲它會拋出NullPointerExeption。

是否有任何其他方式將變量傳遞給內部類?

private String sendRequest(String url, String... data) { 
     final Connection.Response[] res = {}; 
     ... 
     try { 
      final Connection connection = Jsoup.connect(url) 
        .method(Connection.Method.POST) 
        .cookies(cookies) 
        .timeout(30000) 
        .ignoreContentType(true); 
      if (data != null) { 
       connection.data(data); 
      } 

      ((Activity) con).runOnUiThread(new Runnable() { 
       @Override 
       public void run() { 
        try { 
         res[0] = connection.execute(); 
        } catch (IOException e) { 
         e.printStackTrace(); 
        } 
       } 
      }); 
      result = Jsoup.parse(res[0].parse().outerHtml(), "UTF-8").text(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     return result; 
    } 

回答

2

res[]被定義爲一個空數組(無位置),然後你試圖給東西的位置0 res[],沒有位置0,因爲它需要得到一個大小...

final Connection.Response[] res = new Connection.Response[requiredArraySize]; 

在你的情況,requiredArraySize大概是1

+1

我明白,但我怎麼能初始化呢?我試圖尋找替代方法。 – Val

+0

我已經編輯了我的答案和答案 –

+1

謝謝,這是最簡單的方法,我不知道爲什麼我沒有儘早嘗試。 – Val