2017-08-14 77 views
0

我嘗試製作應用程序。我使用Facebook的SDK,我可以登錄Facebook。應用程序正在獲取用戶喜歡的電影。我可以用圖形API做到這一點,我可以將所有電影名稱添加到arraylist。到目前爲止,一切都很好。但是當我嘗試訪問在ArrayList總是null的onCreate方法。當我使用調試時,我可以看到json值。我該如何解決這個問題。我知道我的英語不好,我想解釋我的問題。我能希望:)Android - Arraylist大小始終爲零

public class list extends AppCompatActivity { 

    ArrayList<String> movieList = new ArrayList<String>(); 

    public void getInfo(){ 
     GraphRequest request = GraphRequest.newMeRequest(
       AccessToken.getCurrentAccessToken(), 
       new GraphRequest.GraphJSONObjectCallback() { 
        @Override 
        public void onCompleted(JSONObject object, GraphResponse response) { 
         JSONObject jsonObject = response.getJSONObject(); 
         try { 
          JSONObject movies = jsonObject.getJSONObject("movies"); 
          JSONArray data = movies.getJSONArray("data"); 
          for (int i = 0; i<data.length();i++){ 
           JSONObject objectData = data.getJSONObject(i); 
           String movieName = objectData.getString("name"); 
           movieList.add(movieName); 
          } 
         }catch (JSONException e){ 
          e.printStackTrace(); 
         } 

        } 
       }); 

     Bundle parameters = new Bundle(); 
     parameters.putString("fields", "movies"); 
     request.setParameters(parameters); 
     request.executeAsync(); 
    } 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_list); 
     getInfo(); 

     this.setTitle(movieList.get(0)); 



    } 
} 
+0

因爲'executeAsync()訪問它,它並沒有結束'是所謂的,我認爲'this.setTitle()'在異步請求完成之前運行... –

回答

3

它是空的原因請求是異步並且當您嘗試訪問數組...嘗試在onCompleted

+0

0就是一個例子。如果我想用arraylist填充listView。我能做什麼 ?我想我必須重新填寫完成。這是對的嗎 ? –

+0

是的,它完成...這是我的壞我寫0,我的意思是空的 – nKalai