2016-09-20 28 views
-5

我有一個像這樣的方法來使用loopj從webservices獲取名字。如何在整個班級中使用內部類變量

private void getfirstName() { 
    List<Header> headers = new ArrayList<Header>(); 
    headers.add(new BasicHeader("Accept", "application/json")); 

    RestClient.getShiftCodes(MainActivity.this, "RestService/First_Name", headers.toArray(new Header[headers.size()]), 
      null, new JsonHttpResponseHandler() { 
    @Override 
    public void onSuccess(int statusCode, Header[] headers, JSONArray response) { 
    ArrayList<String> firstNameArray = new ArrayList<String>(); 
    for (int i = 0; i < response.length(); i++) { 
    try { 
     JSONObject c = response.getJSONObject(i); 
     String first_NameArray = c.getString("firstName"); 
     firstNameArray.add(first_NameArray); 
     } 
     catch (JSONException e) { 
      e.printStackTrace(); 
     } 
    } 
    String first_Name= firstNameArray.get(0); 
    } 
}); 

} 

如果我想使用其他方法FIRST_NAME字符串值,我得到這個錯誤

Cannot refer to a non-final variable first_name inside an inner class defined in a different method 

即使我將其更改爲最終我不能使用它。我如何在全班使用它。

+0

請閱讀有關的變量的範圍和壽命。同時我會爲你發佈一個很好的答案。 –

+0

你在'public void onSuccess()'末尾缺少'{''' – user1506104

+0

這個沒有用的評論,並且與這個問題沒有關係。不知何故,他的內容格式出錯了! – Piyush

回答

0

您無法直接獲取內部類變量的引用,而是在外部類中聲明並在內部類中分配值。然後你可以從任何類訪問變量。

+0

其實我試過,但我得到空值。我做錯了什麼? – user3785322

+0

在分配之前不要使用該變量。在內部類任務完成後分配值。然後使用該變量。我:在OnComplete Listner中。 –

+0

好的,我會再次檢查。 – user3785322

1
String first_Name 

聲明出側功能

+0

其實我試過,但我得到空值。我做錯了什麼?任何建議請 – user3785322

+0

裏面的函數是空的? – PriyankaChauhan

+0

在同樣的方法中,我獲得了價值。在其他方法中,它是null.that是我的問題。我無法使用它。 – user3785322